zypp::xml::Reader Class Reference

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

#include <Reader.h>

Inheritance diagram for zypp::xml::Reader:

NonCopyable 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.
bool nextNode ()
bool nextNodeAttribute ()
bool nextNodeOrAttribute ()
bool atEnd () const
const Nodeoperator * () const
const Node *const operator-> () 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 130 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 86 of file Reader.cc.

References _reader, nextNode(), zypp::InputStream::stream(), zypp::xml::structuredErrorFunc(), and ZYPP_THROW.

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

Dtor.

Definition at line 108 of file Reader.cc.

References _reader.


Member Function Documentation

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

Definition at line 121 of file Reader.cc.

References _reader, and ZYPP_THROW.

Referenced by foreachNode(), nextNodeOrAttribute(), and Reader().

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

Definition at line 141 of file Reader.cc.

References _reader, and ZYPP_THROW.

Referenced by nextNodeOrAttribute().

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

Definition at line 113 of file Reader.h.

References nextNode(), and nextNodeAttribute().

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

Definition at line 117 of file Reader.h.

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

Referenced by foreachNode().

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

Definition at line 121 of file Reader.h.

References _node.

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

Definition at line 125 of file Reader.h.

References _node.

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

Definition at line 133 of file Reader.h.

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

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

Definition at line 146 of file Reader.h.

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

Definition at line 159 of file Reader.h.

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

Definition at line 173 of file Reader.cc.

References _node, zypp::xml::Node::depth(), zypp::xml::Node::name(), and zypp::xml::Node::nodeType().

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

Definition at line 193 of file Reader.cc.

References _node, zypp::xml::Node::depth(), zypp::xml::Node::isEmptyElement(), zypp::xml::Node::name(), and zypp::xml::Node::nodeType().

Referenced by zypp::xml::ParseDef::Impl::skipNode().

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

Definition at line 160 of file Reader.cc.

References _reader.


Member Data Documentation

InputStream zypp::xml::Reader::_stream [private]
 

Definition at line 180 of file Reader.h.

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

Definition at line 181 of file Reader.h.

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

Node zypp::xml::Reader::_node [private]
 

Definition at line 182 of file Reader.h.

Referenced by atEnd(), foreachNode(), operator *(), operator->(), seekToEndNode(), and seekToNode().


The documentation for this class was generated from the following files:
Generated on Thu Apr 24 02:25:17 2008 for zypp by  doxygen 1.4.6