普吉克斯姆.如何从节点获取所有子结构,如果事先不知道它的位置



在我遇到的所有例子中,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();
    // ...
}

相关内容

  • 没有找到相关文章

最新更新