+ node = mp::xml::jump_to_next(node, XML_ELEMENT_NODE);
+ if (node)
+ {
+ throw mp::XMLError("Unexpected element "
+ + std::string((const char *)node->name));
+ }
+
+ node = mp::xml::jump_to_children(root, XML_ELEMENT_NODE);
+ while (node)
+ {
+ if (mp::xml::is_element_mp(node, "filters"))
+ check_routes_in_filters(
+ mp::xml::jump_to_children(node,
+ XML_ELEMENT_NODE));
+ else if (mp::xml::is_element_mp(node, "routes"))
+ {
+ const xmlNode* n = mp::xml::jump_to_children(node,
+ XML_ELEMENT_NODE);
+ while (n)
+ {
+ if (mp::xml::is_element_mp(n, "route"))
+ {
+ check_routes_in_filters(
+ mp::xml::jump_to_children(n, XML_ELEMENT_NODE));
+
+ }
+ n = mp::xml::jump_to_next(n, XML_ELEMENT_NODE);
+ }
+ }
+ node = mp::xml::jump_to_next(node, XML_ELEMENT_NODE);
+ }
+}
+
+mp::RouterFleXML::Rep::Rep() : m_xinclude(false)
+{
+}
+
+void mp::RouterFleXML::Rep::base(xmlDocPtr doc, mp::FactoryFilter &factory,
+ bool test_only, const char *file_include_path)
+{
+ m_factory = &factory;
+ parse_xml_config_dom(doc, test_only, file_include_path);
+ m_start_route = "start";
+}
+
+mp::RouterFleXML::RouterFleXML(xmlDocPtr doc, mp::FactoryFilter &factory,
+ bool test_only, const char *file_include_path)
+ : m_p(new Rep)
+{
+ m_p->base(doc, factory, test_only, file_include_path);
+}
+
+mp::RouterFleXML::RouterFleXML(std::string xmlconf, mp::FactoryFilter &factory,
+ bool test_only)
+ : m_p(new Rep)
+{