25 NodeParser::NodeParser(
const xmlpp::Node::NodeList& list): xmlpp::Node::NodeList(list)
 
   29 NodeParser::NodeParser(
const xmlpp::Node* node)
 
   31   push_back(const_cast<xmlpp::Node*>(node));
 
   34 NodeParser::NodeParser(
const xmlpp::DomParser& parser)
 
   36   xmlpp::Node* node = parser.get_document()->get_root_node();
 
   37   push_back(const_cast<xmlpp::Node*>(node));
 
   40 NodeParser NodeParser::Path(
const xmlpp::Node* node, 
const std::string& path)
 
   47   std::string key = path;
 
   48   std::string remainder;
 
   49   std::string::size_type token_pos = path.find(
'/');
 
   50   if ( token_pos != std::string::npos )
 
   52     key = path.substr(0, token_pos );
 
   53     remainder = path.substr( token_pos + 1 );
 
   57   xmlpp::Node::NodeList list = node->get_children();
 
   58   for (xmlpp::Node::NodeList::iterator iter = list.begin(); iter != list.end(); ++iter)
 
   60     if ( (*iter)->get_name() == key )
 
   63       if ( remainder.length() )
 
   66         result.splice(result.end(), remain_list);
 
   71         result.push_back(*iter);
 
   78 NodeParser NodeParser::Path(
const std::string& path)
 const 
   83   for (const_iterator iter = begin(); iter != end(); ++iter)
 
   86     result.splice(result.end(), iter_list);
 
   92 NodeParser NodeParser::Select(
const std::string& key, 
const std::string& value)
 const 
   96   for (const_iterator iter = begin(); iter != end(); ++iter)
 
   98     xmlpp::Node::NodeList list = (*iter)->get_children();
 
   99     for (xmlpp::Node::NodeList::const_iterator iter3 = list.begin(); iter3 != list.end(); ++iter3)
 
  101       if ( (*iter3)->get_name() == key )
 
  103         xmlpp::Node::NodeList list = (*iter3)->get_children();
 
  104         for (xmlpp::Node::NodeList::const_iterator iter4 = list.begin(); iter4 != list.end(); ++iter4)
 
  106           const xmlpp::TextNode* nodeText = 
dynamic_cast<const xmlpp::TextNode*
>(*iter4);
 
  107           if ( nodeText && nodeText->get_content() == value )
 
  108             result.push_back(*iter);
 
  117 vector<string> NodeParser::Text(
void)
 const 
  119   vector<string> result;
 
  122   for (xmlpp::Node::NodeList::const_iterator iter = begin(); iter != end(); ++iter)
 
  125     xmlpp::Node::NodeList list = (*iter)->get_children();
 
  126     for (xmlpp::Node::NodeList::const_iterator iter2 = list.begin(); iter2 != list.end(); ++iter2)
 
  128       const xmlpp::TextNode* nodeText = 
dynamic_cast<const xmlpp::TextNode*
>(*iter2);
 
  131         result.push_back(nodeText->get_content());
 
  135   if ( result.empty() )
 
  136     result.push_back(
string());
 
Declaration of nodeparser object, which facilitiates searching for nodes in an XML file using a notat...