libzypp 17.37.17
zypp::xml Namespace Reference

Namespaces

namespace  detail
namespace  parse_def_assign
 parseDefAssign exposed details

Classes

class  Node
 xmlTextReader based interface to Reader's current node. More...
class  ParseDef
 Define a xml node structure to parse. More...
struct  ParseDefBuildException
 Exceptions when building a ParseDef tree. More...
struct  ParseDefConsume
 Base class for ParseDef consumer. More...
class  ParseDefConsumeCallback
 ParseDef consumer that invokes callbacks. More...
class  ParseDefConsumeRedirect
 ParseDef consumer redirecting all events to another consumer. More...
struct  ParseDefDataException
 Parse exceptions related to the nodes content. More...
struct  ParseDefException
 Common base class for ParseDef exceptions. More...
struct  ParseDefImplConsume
struct  ParseDefTraits
struct  ParseDefValidateException
 Parse exceptions related to the documents node structure. More...
class  Reader
 xmlTextReader based interface to iterate xml streams. More...
struct  Validate
 xmlTextReader document validation. More...
class  XmlString
 xmlChar * wrapper. More...

Typedefs

using ReadState = xmlTextReaderMode
using NodeType = xmlReaderTypes

Functions

std::ostream & operator<< (std::ostream &str, const ReadState &obj)
std::ostream & operator<< (std::ostream &str, const NodeType &obj)
std::ostream & operator<< (std::ostream &str, const Node &obj)
template<class TData>
void rnParse (const InputStream &input_r, TData &data_r)
 Parse xml input_r and store data in data_r.
std::ostream & operator<< (std::ostream &str, const ParseDef::Impl &obj)
std::ostream & operator<< (std::ostream &str, ParseDef::Mode obj)
std::ostream & operator<< (std::ostream &str, const ParseDef &obj)
std::ostream & operator<< (std::ostream &str, const XmlString &obj)
std::string unescape (const std::string &in_r) ZYPP_API
 Unescape xml special charaters (& -> &; from IoBind library)
ZYPP_API detail::EscapedString escape (const std::string &in_r)
 Escape xml special charaters (& -> &; from IoBind library).
std::ostream & operator<< (std::ostream &str, const Node &obj)
 Stream output.
std::ostream & operator<< (std::ostream &str, ParseDef::Mode obj)
 ParseDef::Mode stream output.
std::ostream & operator<< (std::ostream &str, const ParseDef &obj)
 Stream output.
std::ostream & operator<< (std::ostream &str, const XmlString &obj) ZYPP_API
 Stream output.

Typedef Documentation

◆ ReadState

using zypp::xml::ReadState = xmlTextReaderMode

Definition at line 27 of file libxmlfwd.h.

◆ NodeType

using zypp::xml::NodeType = xmlReaderTypes

Definition at line 31 of file libxmlfwd.h.

Function Documentation

◆ operator<<() [1/11]

std::ostream & zypp::xml::operator<< ( std::ostream & str,
const ReadState & obj )

Definition at line 29 of file libxmlfwd.cc.

◆ operator<<() [2/11]

std::ostream & zypp::xml::operator<< ( std::ostream & str,
const NodeType & obj )

Definition at line 50 of file libxmlfwd.cc.

◆ operator<<() [3/11]

std::ostream & zypp::xml::operator<< ( std::ostream & str,
const Node & obj )
related

Definition at line 57 of file Node.cc.

◆ rnParse()

template<class TData>
void zypp::xml::rnParse ( const InputStream & input_r,
TData & data_r )
inline

Parse xml input_r and store data in data_r.

TData must be defaultconstructible and assignable.

TData::RootNode must be a xml::ParseDef constructible from TData&.

Exceptions
ParseDefExceptionon parse errors.

To parse a xml file like this:

<test>
<setup attr="13">value</setup>
<list name="A"/>
<list name="b"/>
</test>

You need something like this:

struct XmlData
{
// data
unsigned attr;
std::string value;
std:list<std::string> names;
public:
// Convenience parsing to *this.
void parse( const Pathname & path_r )
{ xml::rnParse( path_r, *this ); }
public:
// Parser description
struct RootNode : public xml::ParseDef
{
RootNode( XmlData & data )
: ParseDef( "test", MANDTAORY )
, _data( data )
{
(*this)
("setup", MANDTAORY,
xml::parseDefAssign( data.value )
( "attr", data.attr ) )
// Each individual list entry is collected locally
// and appended to the list after the node is done.
("list", MULTIPLE_OPTIONAL,
xml::parseDefAssign( "name", _cname )
>> bind( &RootNode::cdone, this, _1 ) )
;
}
void cdone( const xml::Node & node_r )
{
_data.push_back( _cname );
_cname.clear(); // prepare for next
}
private:
XmlData & _data; // stored just because notification callbacks are used.
std::string _cname;
};
};
XmlData xmlData;
xmlData.parse( "/tmp/mytest.xml" );
Define a xml node structure to parse.
Definition ParseDef.h:129
Definition Arch.h:364
void rnParse(const InputStream &input_r, TData &data_r)
Parse xml input_r and store data in data_r.
Definition Parse.h:97

Definition at line 97 of file Parse.h.

◆ operator<<() [4/11]

std::ostream & zypp::xml::operator<< ( std::ostream & str,
const ParseDef::Impl & obj )

Definition at line 353 of file ParseDef.cc.

◆ operator<<() [5/11]

std::ostream & zypp::xml::operator<< ( std::ostream & str,
ParseDef::Mode obj )
related

Definition at line 452 of file ParseDef.cc.

◆ operator<<() [6/11]

std::ostream & zypp::xml::operator<< ( std::ostream & str,
const ParseDef & obj )
related

Definition at line 471 of file ParseDef.cc.

◆ operator<<() [7/11]

std::ostream & zypp::xml::operator<< ( std::ostream & str,
const XmlString & obj )
related

Definition at line 46 of file XmlString.cc.

◆ unescape()

std::string zypp::xml::unescape ( const std::string & in_r)

Unescape xml special charaters (& -> &; from IoBind library)

Definition at line 113 of file XmlEscape.cc.

◆ escape()

ZYPP_API detail::EscapedString zypp::xml::escape ( const std::string & in_r)
inline

Escape xml special charaters (& -> &; from IoBind library).

The detail::EscapedString can be dumped to an ostream and implicitly converts into a std::string.

Definition at line 51 of file XmlEscape.h.