libzypp 17.38.15

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)
| relates: ReadState Stream output.
std::ostream & | operator<< (std::ostream &str, const NodeType &obj)
| relates: NodeType Stream output.
std::ostream & | operator<< (std::ostream &str, const Node &obj)
| relates: Node Stream output.
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)
| relates: ParseDef ParseDef::Mode stream output.
std::ostream & | operator<< (std::ostream &str, const ParseDef &obj)
| relates: ParseDef Stream output.
std::ostream & | operator<< (std::ostream &str, const XmlString &obj) ZYPP_API
| relates: XmlString Stream output.
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).
\ref ParseDef consumer assigning \ref Node text and attribues values to variables.
relates: parse_def_assign::Consumer relates: parse_def_assign::Builder This function allows convenient contruction of a parse_def_assign::Consumer to be passed as Node conssumer to ParseDef. Simply list each attribute's name together with the variable its value should be assigned to. If the attribute name is omitted, the node's text value gets assigned. Target variables can be of any type tsupported by Assigner. Basically all types constructible from `char*`, or where a specialisation exists (e.g. numeric and bool). void setupDone( const xml::Node & _node ) { ... } // parsedef for '<setup attr="13">value</setup>' ParseDef( "attr", MANDTAORY, xml::parseDefAssign( data.value ) ( "attr", data.attr ) >> &setupDone ); zypp::xml::Node xmlTextReader based interface to Reader's current node. Definition Node.h:36 zypp::xml::ParseDef::ParseDef ParseDef(std::string name_r, Mode mode_r) Definition ParseDef.cc:374 zypp::xml::parseDefAssign parse_def_assign::Builder parseDefAssign() Definition ParseDefConsume.h:356 See also xml::rnParse for more example.
parse_def_assign::Builder | parseDefAssign ()
template<class Tp>
parse_def_assign::Builder | parseDefAssign (Tp &value_r)
template<class Tp>
parse_def_assign::Builder | parseDefAssign (const std::string &attr_r, Tp &value_r)

## 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/7]

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

relates: ReadState Stream output.

Definition at line 29 of file libxmlfwd.cc.

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

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

relates: NodeType Stream output.

Definition at line 50 of file libxmlfwd.cc.

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

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

relates: Node Stream output.

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/7]

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

Definition at line 353 of file ParseDef.cc.

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

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

relates: ParseDef ParseDef::Mode stream output.

Definition at line 452 of file ParseDef.cc.

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

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

relates: ParseDef Stream output.

Definition at line 471 of file ParseDef.cc.

## ◆ parseDefAssign() [1/3]

parse_def_assign::Builder zypp::xml::parseDefAssign | ( |  | ) |
| inline

Definition at line 356 of file ParseDefConsume.h.

## ◆ parseDefAssign() [2/3]

template<class Tp>

parse_def_assign::Builder zypp::xml::parseDefAssign | ( | Tp & | value_r | ) |
| inline

Definition at line 360 of file ParseDefConsume.h.

## ◆ parseDefAssign() [3/3]

template<class Tp>

parse_def_assign::Builder zypp::xml::parseDefAssign | ( | const std::string & | attr_r,
|  | Tp & | value_r )
| inline

Definition at line 364 of file ParseDefConsume.h.

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

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

relates: XmlString Stream output.

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.