- std::cout << "<filters>" << std::endl;
-
-
- // filter element processing
- xml_progress_deep_to_element(reader);
- if (std::string("filter") != (const char*)xmlTextReaderConstName(reader)
- )
- xml_error(reader, "filter element <filter id=\"some_id\" "
- "type=\"some_type\"/> expected");
-
- while (std::string("filter") == (const char*)xmlTextReaderConstName(reader)){
- std::string filter_id;
- std::string filter_type;
- if (!xmlTextReaderMoveToFirstAttribute(reader)
- || std::string("id") != (const char*)xmlTextReaderConstName(reader))
- xml_error(reader, "filter element <filter id=\"some_id\" "
- "type=\"some_type\"/> expected");
- filter_id = (const char*)xmlTextReaderConstValue(reader);
- if (!xmlTextReaderMoveToNextAttribute(reader)
- || std::string("type") != (const char*)xmlTextReaderConstName(reader))
- xml_error(reader, "filter element <filter id=\"some_id\" "
- "type=\"some_type\"/> expected");
- filter_type = (const char*)xmlTextReaderConstValue(reader);
- std::cout << "<filter id=\"" << filter_id
- << "\" type=\"" << filter_type << "\"/>"
- << std::endl;
- xml_progress_flat_to_element(reader);
- }
-
- std::cout << "</filters>" << std::endl;
-
-
- // routes element processing
- // xml_progress_flat_to_element(reader);
- if (std::string("routes") != (const char*)xmlTextReaderConstName(reader)
- )
- xml_error(reader, "routes element <routes> expected");
-
- std::cout << "<routes>" << std::endl;
- // route element processing
- xml_progress_deep_to_element(reader);
- if (std::string("route") != (const char*)xmlTextReaderConstName(reader)
- )
- xml_error(reader, "route element <route id=\"some_id\" "
- "type=\"some_type\"/> expected");
- while (std::string("route") == (const char*)xmlTextReaderConstName(reader)){
- std::string route_id;
- if (!xmlTextReaderMoveToFirstAttribute(reader)
- || std::string("id") != (const char*)xmlTextReaderConstName(reader))
- xml_error(reader, "route element <route id=\"some_id\"/> expected");
- route_id = (const char*)xmlTextReaderConstValue(reader);
-
-
- std::cout << "<route id=\"" << route_id << "\">" << std::endl;
- std::cout << "</route>" << std::endl;
- xml_progress_flat_to_element(reader);
- }
-
- std::cout << "</routes>" << std::endl;
-
- std::cout << "</yp2>" << std::endl;
-
- xml_debug_print(reader);
-
-
- // freeing C xml reader libs
- xmlFreeTextReader(reader);
- if (ret != 0) {
- std::cerr << "Parsing failed of XML configuration"
- << std::endl
- << m_xmlconf << std::endl;
- std::exit(1);
- }
- }
-
- void xml_error ( xmlTextReader* reader, std::string msg)
- {
- std::cerr << "ERROR: " << msg << " "
- << xmlTextReaderGetParserLineNumber(reader) << ":"
- << xmlTextReaderGetParserColumnNumber(reader) << " "
- << xmlTextReaderConstName(reader) << " "
- << xmlTextReaderDepth(reader) << " "
- << xmlTextReaderNodeType(reader) << std::endl;
- }
-
- void xml_debug_print ( xmlTextReader* reader)
- {
- // processing all other elements
- //while (xmlTextReaderMoveToElement(reader)) // reads next element ??
- //while (xmlTextReaderNext(reader)) //does not descend, keeps level
- while (xmlTextReaderRead(reader)) // descends into all subtree nodes
- std::cout << xmlTextReaderGetParserLineNumber(reader) << ":"
- << xmlTextReaderGetParserColumnNumber(reader) << " "
- << xmlTextReaderDepth(reader) << " "
- << xmlTextReaderNodeType(reader) << " "
- << "ConstName " << xmlTextReaderConstName(reader) << " "
- << std::endl;
- }
-
- bool xml_progress_deep_to_element(xmlTextReader* reader)
- {
- bool ret = false;
- while(xmlTextReaderRead(reader)
- && xmlTextReaderNodeType(reader) != XML_ELEMENT_NODE
- && !( xmlTextReaderNodeType(reader)
- == XML_READER_TYPE_END_ELEMENT
- && 0 == xmlTextReaderDepth(reader))
- )
- ret = true;
- return ret;
- }
-
- bool xml_progress_flat_to_element(xmlTextReader* reader)
- {
- bool ret = false;
-
- while(xmlTextReaderNext(reader)
- && xmlTextReaderNodeType(reader) != XML_ELEMENT_NODE
- && !( xmlTextReaderNodeType(reader)
- == XML_READER_TYPE_END_ELEMENT
- && 0 == xmlTextReaderDepth(reader))
- ) {
- ret = true;
- }
- return ret;
- }
-
-#endif
-
-};