在深度优先模式下快速 XML 解析 XML

RapidXML Parse XML in Depth First mode

我正在尝试使用 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...
    }
  }