+ if (std::string((const char *)attr->name) == "xmlns")
+ {
+ const xmlNode *val = attr->children;
+ //BOOST_CHECK_EQUAL(val->type, XML_TEXT_NODE);
+ if (std::string((const char *)val->content)
+ != "http://indexdata.dk/yp2/config/1")
+ xml_dom_error(root,
+ "expected xmlns=\"http://indexdata.dk/yp2/config/1\", got ");
+ }
+ }
+ std::cout << "processing /yp2" << std::endl;
+
+ // process <start> node which is expected first element node
+ const xmlNode* node = root->children;
+ for (; node && node->type != XML_ELEMENT_NODE; node = node->next)
+ ;
+ if (std::string((const char *)node->name)
+ != "start")
+ xml_dom_error(root, "expected <start>, got ");
+
+ std::cout << "processing /yp2/start" << std::endl;
+
+ // process <filters> node which is expected second element node
+ node = node->next;
+ for (; node && node->type != XML_ELEMENT_NODE; node = node->next)
+ ;
+ if (std::string((const char *)node->name)
+ != "filters")
+ xml_dom_error(root, "expected <filters>, got ");
+
+ std::cout << "processing /yp2/filters" << std::endl;
+
+ // process <filter> nodes in next level
+ const xmlNode* node2 = node->children;
+ for (; node2 && node2->type != XML_ELEMENT_NODE; node2 = node2->next)
+ ;
+ if (std::string((const char *)node2->name)
+ != "filter")
+ xml_dom_error(root, "expected <filter>, got ");
+
+ //while(node2 && std::string((const char *)node2->name) == "filter"){
+ std::cout << "processing /yp2/filters/filter" << std::endl;
+ //for (; node2 && node2->type != XML_ELEMENT_NODE; node2 = node2->next)
+ // ;
+ //if(node2->type != XML_ELEMENT_NODE)
+ // break;
+ //}
+
+ // process <routes> node which is expected third element node
+ node = node->next;
+ for (; node && node->type != XML_ELEMENT_NODE; node = node->next)
+ ;
+ if (std::string((const char *)node->name)
+ != "routes")
+ xml_dom_error(root, "expected <routes>, got ");
+
+ std::cout << "processing /yp2/routes" << std::endl;
+
+ // process <route> nodes in next level
+ node2 = node->children;
+ for (; node2 && node2->type != XML_ELEMENT_NODE; node2 = node2->next)
+ ;
+ if (std::string((const char *)node2->name)
+ != "route")
+ xml_dom_error(root, "expected <route>, got ");
+
+ std::cout << "processing /yp2/routes/route" << std::endl;
+
+ // process <filter> nodes in third level
+ const xmlNode* node3 = node2->children;
+ for (; node3 && node3->type != XML_ELEMENT_NODE; node3 = node3->next)
+ ;
+ if (std::string((const char *)node3->name)
+ != "filter")
+ xml_dom_error(root, "expected <filter>, got ");
+
+ std::cout << "processing /yp2/routes/route/filter" << std::endl;