zypp::xml::Reader Class Reference

xmlTextReader based interface to iterate xml streams. More...

#include <Reader.h>

Inheritance diagram for zypp::xml::Reader:
[legend]

List of all members.

Public Types

typedef function< bool(Reader &)> ProcessNode

Public Member Functions

 Reader (const InputStream &stream_r, const Validate &validate_r=Validate::none())
 Ctor.
 ~Reader ()
 Dtor.
XmlString nodeText ()
 If the curent node is not empty, advances the reader to the next node, and returns the value.
bool nextNode ()
bool nextNodeAttribute ()
bool nextNodeOrAttribute ()
bool atEnd () const
const Nodeoperator* () const
const Nodeoperator-> () const
bool foreachNode (ProcessNode fnc_r)
bool foreachNodeAttribute (ProcessNode fnc_r)
bool foreachNodeOrAttribute (ProcessNode fnc_r)
bool seekToNode (int depth_r, const std::string &name_r)
bool seekToEndNode (int depth_r, const std::string &name_r)

Private Member Functions

void close ()

Private Attributes

InputStream _stream
xmlTextReaderPtr _reader
Node _node


Detailed Description

xmlTextReader based interface to iterate xml streams.

 // Consume a node.
 bool consumeNode( XML::Reader & reader_r )
 {
   DBG << *reader_r << endl;
   return true;
 }

 // Consume all nodes (omitting attributes)
 void example()
 {
   try
     {
       XML::Reader reader( "/Local/repodata/repomd.xml" );
       reader.foreachNode( consumeNode );
     }
   catch ( const Exception & )
     { ; } // parse error
 }

 // Consume a node.
 bool consumeNodeAndAttribute( XML::Reader & reader_r )
 {
   consumeNode( reader_r );
   return reader_r.foreachNodeAttribute( consumeNode );
 }

 // Consume all nodes and thair attributes.
 void example()
 {
   Pathname repodata( "/Local/repodata/repomd.xml" );
   try
     {
       XML::Reader reader( "/Local/repodata/repomd.xml" );
       reader.foreachNode( consumeNodeAndAttribute );
       // or:
       // reader.foreachNodeOrAttribute( consumeNode )
     }
   catch ( const Exception & )
     { ; } // parse error
 }

Definition at line 95 of file Reader.h.


Member Typedef Documentation

typedef function<bool( Reader & )> zypp::xml::Reader::ProcessNode

Definition at line 141 of file Reader.h.


Constructor & Destructor Documentation

zypp::xml::Reader::Reader ( const InputStream stream_r,
const Validate validate_r = Validate::none() 
)

Ctor.

Setup xmlTextReader and advance to the 1st Node.

Definition at line 109 of file Reader.cc.

References _reader, _stream, MIL, nextNode(), zypp::InputStream::stream(), and ZYPP_THROW.

zypp::xml::Reader::~Reader (  ) 

Dtor.

Definition at line 134 of file Reader.cc.

References _reader, _stream, and MIL.


Member Function Documentation

XmlString zypp::xml::Reader::nodeText (  ) 

If the curent node is not empty, advances the reader to the next node, and returns the value.

Note:
if the node has a xml subtree you will probably jump to that node and get a empty text value back. Use it only if you are sure the node has no XML subtree.

Definition at line 143 of file Reader.cc.

References _node, zypp::xml::Node::isEmptyElement(), nextNode(), zypp::xml::Node::nodeType(), and zypp::xml::Node::value().

Referenced by zypp::parser::yum::RepomdFileReader::Impl::consumeNode(), zypp::parser::yum::PatchesFileReader::Impl::consumeNode(), and zypp::parser::ws::WebpinResultFileReader::Impl::consumeNode().

bool zypp::xml::Reader::nextNode (  ) 

bool zypp::xml::Reader::nextNodeAttribute (  ) 

Definition at line 183 of file Reader.cc.

References _reader, and ZYPP_THROW.

Referenced by foreachNodeAttribute(), and nextNodeOrAttribute().

bool zypp::xml::Reader::nextNodeOrAttribute (  )  [inline]

Definition at line 124 of file Reader.h.

References nextNode(), and nextNodeAttribute().

Referenced by foreachNodeOrAttribute().

bool zypp::xml::Reader::atEnd (  )  const [inline]

Definition at line 128 of file Reader.h.

References _node, and zypp::xml::Node::readState().

Referenced by foreachNode(), foreachNodeOrAttribute(), seekToEndNode(), and seekToNode().

const Node& zypp::xml::Reader::operator* (  )  const [inline]

Definition at line 132 of file Reader.h.

References _node.

const Node* zypp::xml::Reader::operator-> (  )  const [inline]

Definition at line 136 of file Reader.h.

References _node.

bool zypp::xml::Reader::foreachNode ( ProcessNode  fnc_r  )  [inline]

bool zypp::xml::Reader::foreachNodeAttribute ( ProcessNode  fnc_r  )  [inline]

Definition at line 157 of file Reader.h.

References _node, zypp::xml::Node::isAttribute(), and nextNodeAttribute().

bool zypp::xml::Reader::foreachNodeOrAttribute ( ProcessNode  fnc_r  )  [inline]

Definition at line 170 of file Reader.h.

References atEnd(), and nextNodeOrAttribute().

bool zypp::xml::Reader::seekToNode ( int  depth_r,
const std::string &  name_r 
)

bool zypp::xml::Reader::seekToEndNode ( int  depth_r,
const std::string &  name_r 
)

void zypp::xml::Reader::close (  )  [private]

Definition at line 202 of file Reader.cc.

References _reader.


Member Data Documentation

Definition at line 191 of file Reader.h.

Referenced by Reader(), and ~Reader().

xmlTextReaderPtr zypp::xml::Reader::_reader [private]

Definition at line 192 of file Reader.h.

Referenced by close(), nextNode(), nextNodeAttribute(), Reader(), and ~Reader().


The documentation for this class was generated from the following files:

doxygen