gpt4 book ai didi

c++ - RapidXML 以深度优先模式解析 XML

转载 作者:行者123 更新时间:2023-11-28 05:44:11 27 4
gpt4 key购买 nike

我正在尝试在 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com