【问题标题】:pugixml. how to get all of the substructure from node, if not known in advance where it is located?pugixml。如果事先不知道节点的位置,如何从节点获取所有子结构?
【发布时间】:2016-02-11 09:27:35
【问题描述】:

在我遇到的所有 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 文档中查找并获取所有节点“需要节点”的所有子结构(和值)?如果我不知道它们在树结构中的位置。

【问题讨论】:

    标签: c++ pugixml


    【解决方案1】:

    最简单的方法是使用 XPath。假设“需要节点”被命名为“信息”,您可以获取所有具有此名称的节点,遍历它们并从结果节点获取数据:

    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();
        // ...
    }
    

    【讨论】:

      猜你喜欢
      • 2011-09-10
      • 1970-01-01
      • 1970-01-01
      • 2018-09-22
      • 1970-01-01
      • 1970-01-01
      • 2012-12-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多