在我遇到的所有例子中,pugixml 在任何地方解析树,如果已知,在树结构中的位置节点。但是,如果您不知道节点在哪里,并且只知道她的名字怎么办。
我有一个输入字符串的示例:
<data>
.......
<name not known1>
<name not known2>
........ <!-- maybe something sub node>
<need node>
<Name>student 1</Name>
<Roll>111</Roll>
</need node>
........ <!-- maybe something sub node>
</name not known2>
</name not known1>
<name not known3>
........ <!-- maybe something nodes>
<need node>
<Name>july 1</Name>
<new data>444</new data>
<data5>444</data5>
<node>
<data>student class 4</data>
</node>
</need node>
........ <!-- maybe something nodes>
</name not known3>
.......
</data>
请告诉我如何使用 pugixml 从所有 xml 文档中查找并获取所有节点"需要节点"的所有子结构(和值)?如果我不知道它们在树结构中的位置。
最简单的方法是使用 XPath。假设"need node"被命名为"information",你可以获取具有这个名称的所有节点,遍历它们并从结果节点中获取数据:
pugi::xpath_node_set ns = doc.select_nodes("//information");
// if you don't have C++11, use for (size_t i = 0; i < ns.size(); ++i)
for (pugi::xpath_node n: ns)
{
pugi::xml_node node = n.node();
const char* name = n.child("Name").text().get();
// ...
}