libzypp: zypp::xml Namespace Reference

libzypp 17.25.10

Namespaces | Classes | Typedefs | Functions
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
typedef xmlTextReaderMode | ReadState
typedef xmlReaderTypes | NodeType

## 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`. More...
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::string | unescape (const std::string &in_r)
| Unescape xml special charaters (`& -> &`; from IoBind library) More...
detail::EscapedString | escape (const std::string &in_r)
| Escape xml special charaters (`& -> &`; from IoBind library). More...
std::ostream & | operator<< (std::ostream &str, const XmlString &obj)

## Typedef Documentation

## ◆ ReadState

typedef xmlTextReaderMode zypp::xml::ReadState

Definition at line 27 of file libxmlfwd.h.

## ◆ NodeType

typedef xmlReaderTypes zypp::xml::NodeType

Definition at line 31 of file libxmlfwd.h.

## Function Documentation

## ◆ operator<<() [1/7]

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

Definition at line 29 of file libxmlfwd.cc.

## ◆ operator<<() [2/7]

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

Definition at line 50 of file libxmlfwd.cc.

## ◆ operator<<() [3/7]

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

  ParseDefException | on parse errors.

To parse a xml file like this:

<test>
<setup attr="13">value</setup>
<list name="A"/>
<list name="b"/>
</test>
attr
sat::SolvAttr attr
Definition: PoolQuery.cc:311

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" );
_data
std::list< PublicKeyData > _data
Definition: KeyRing.cc:145
zypp::filesystem::Pathname
Pathname.
Definition: Pathname.h:45
zypp::xml::ParseDef
Define a xml node structure to parse.
Definition: ParseDef.h:129
std
Definition: Arch.h:348
zypp::xml::rnParse
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/7]

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

Definition at line 348 of file ParseDef.cc.

## ◆ operator<<() [5/7]

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

Definition at line 447 of file ParseDef.cc.

## ◆ operator<<() [6/7]

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

Definition at line 466 of file ParseDef.cc.

## ◆ unescape()

ZYPP_API 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()

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.

## ◆ operator<<() [7/7]

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

Definition at line 46 of file XmlString.cc.