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 cuurent 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 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 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 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

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

If the cuurent 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 116 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::PatchFileReader::Impl::consumeDeltarpmNode(), zypp::parser::yum::FileReaderBase::BaseImpl::consumeFormatNode(), zypp::parser::yum::PatchFileReader::Impl::consumeMessageNode(), zypp::parser::yum::RepomdFileReader::Impl::consumeNode(), zypp::parser::yum::ProductFileReader::Impl::consumeNode(), zypp::parser::yum::PatchFileReader::Impl::consumeNode(), zypp::parser::yum::PatchesFileReader::Impl::consumeNode(), zypp::parser::yum::OtherFileReader::Impl::consumeNode(), zypp::parser::yum::FilelistsFileReader::Impl::consumeNode(), zypp::parser::yum::PatternFileReader::Impl::consumeNode(), zypp::parser::yum::PatchFileReader::Impl::consumePackageNode(), zypp::parser::yum::FileReaderBase::BaseImpl::consumePackageNode(), zypp::parser::yum::PatchFileReader::Impl::consumePatchrpmNode(), and zypp::parser::yum::PatchFileReader::Impl::consumeScriptNode().

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

Definition at line 136 of file Reader.cc.

References _reader, and ZYPP_THROW.

Referenced by foreachNode(), nextNodeOrAttribute(), nodeText(), Reader(), seekToEndNode(), seekToNode(), and zypp::xml::ParseDef::Impl::take().

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

Definition at line 156 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* const 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]

Definition at line 144 of file Reader.h.

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

Referenced by zypp::parser::yum::RepomdFileReader::Impl::Impl(), zypp::parser::yum::ProductFileReader::Impl::Impl(), zypp::parser::yum::PrimaryFileReader::Impl::Impl(), zypp::parser::yum::PatchFileReader::Impl::Impl(), zypp::parser::yum::PatchesFileReader::Impl::Impl(), zypp::parser::yum::OtherFileReader::Impl::Impl(), zypp::parser::yum::FilelistsFileReader::Impl::Impl(), and zypp::parser::yum::PatternFileReader::Impl::Impl().

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 
)

Definition at line 188 of file Reader.cc.

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

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

Definition at line 208 of file Reader.cc.

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

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

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

Definition at line 175 of file Reader.cc.

References _reader.


Member Data Documentation

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

Definition at line 191 of file Reader.h.

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

Definition at line 192 of file Reader.h.

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

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

Definition at line 193 of file Reader.h.

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


The documentation for this class was generated from the following files:
Generated on Tue Sep 25 19:23:30 2007 for libzypp by  doxygen 1.5.3