libzypp: zypp::xml Namespace Reference

libzypp 17.38.5

zypp::xml Namespace Reference

## Namespaces
namespace | parse_def_assign
| parseDefAssign exposed details
namespace | detail

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

  ParseDefException | on 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" );
zypp::filesystem::Pathname
Pathname.
Definition Pathname.h:48
zypp::xml::ParseDef
Define a xml node structure to parse.
Definition ParseDef.h:129
std
Definition ansi.h:855
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/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.