1

我正在尝试使用 pugixml 从大型 XML 文件中提取数据。我只对节点 BAR 和 Nm 中的值感兴趣:

    <Document xmlns="xxxxxx" xmlns:xsi="vvvvvvv">
      <Outer>
        <HDR>
          <MsgId>FOOBAR222222</MsgId>
          <ID>
            <AAAAA>FOOBAR222222</AAAAA>
          </ID>
        </HDR>
        <ENTRY>
          <Status>existing</Status>
          <ELEM>
            <TM>2012-11-19T13:00:00</TM>
          </ELEM>
          <FOO>
            <BAR>xxxxx</BAR>
            <NM>
              <Nm>yyyyyyy</Nm>
            </NM>
          </FOO>
        </ENTRY>

据我所见,可以遍历根文档,但是,在访问父节点和子节点时我有点迷失:

        void walk(xml_node parent)
        {
            for(xml_node child = parent.first_child(); child; child = child.next_sibling())
            {
              // ... Would like to output:  "FOO: xxxx  / NM:  yyyyyyyy"
            }
        }
4

2 回答 2

2

您可以为 thefirst_child()和其他成员函数提供参数:

auto Outer = document.first_child("OUTER");
auto Entry = Outer.first_child("ENTRY");
auto Foo = Entry.first_child("FOO");

等等

当您最终到达目的地时,使用.value()获取节点值。

PugiXML 还具有 XPath 支持,但在这种情况下,这可能是多余的。

于 2012-11-22T10:16:28.740 回答
0

Pugi 还有一个简单的路径工具5.10。杂项功能

您只需一行即可完成上述操作:

document.first_element_by_path("/Document/Outer/ENTRY/FOO/BAR").first_child().value();
于 2017-07-25T08:53:45.163 回答