我正在尝试在 C++ 中使用 RapidXML 解析大型 XML 文件 (1.8 GB)。虽然我可以使用以下方法获取任何特定节点的子节点:
for(xml_node<> *child = node->first_node(); child; child = child->next_sibling()) {
...
}
我不知道如何解析深度优先。 RapidXML 不为此提供任何内置迭代器。是否有任何其他用于大型 xml 处理的性能密集型库(在 DOM 中,而不是在 SAX 中)?
最佳答案
您混淆了 XML 的解析和内容的遍历。
RapidXML 在单个线性过程中解析 XML,同时构建对象树。然后您可以以任何您想要的方式遍历树。
深度优先搜索通常是一个递归过程,但在您的搜索中,您将使用您展示的代码遍历每个节点的所有兄弟节点。不同之处在于您在遍历每个节点时对每个节点执行的操作。
void processNode(xml_node<> node)
{
for(xml_node<> *child = node->first_node(); child; child = child->next_sibling())
{
processNode(child);
... and do more stuff here...
}
}
关于c++ - RapidXML 以深度优先模式解析 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36548467/