有没有遍历TinyXML子树节点的代码?比如:给定一个父节点,遍历所有它的子节点以及其所有子节点的子节点?
void TiXmlIterator::iterate(const TiXmlNode* el)
{
cout << "Iterating Node " << el->Value() << endl;
// More useful code here...
for (const TiXmlNode* node=el->FirstChild(); node; node=node->NextSibling())
{
iterate(node);
}
// And/Or here.
}
bool MyTiXmlVisitor::Visit(const TiXmlText& text)
{
cout << "Visiting Text: " << text.Value() << endl;
return true; // This will ensure it keeps iterating
}
这将对调用Accept()方法的节点子树中的所有文本元素起作用。要作用于所有元素,请重写TiXmlVisitor的其余虚拟方法。然后,在您想要遍历子树的代码中,执行以下操作:
subtree_root_node->Accept( my_tixmlvisitor_object );
您可以在库中使用访问者模式实现。创建一个继承自TiXmlVistor的类,覆盖必要的方法,如VisitElement,然后为特定节点调用Accept()方法。