pugixml。如果从节点获得所有子结构,如果事先不知道它在哪里?

时间:2016-02-11 09:27:36

标签: c++ pugixml

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

1 个答案:

答案 0 :(得分:0)

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

<Storyboard x:Key="Foo" AutoReverse="True" RepeatBehavior="3x">
    <Storyboard.Children/>
</Storyboard>

<DoubleAnimationUsingKeyFrames x:Key = "Bar"/>

<ei:DataTrigger
    Binding="{
        Binding SomeVar,
        ElementName=SomeElement,
        FallbackValue=False,
        Mode=OneWay}"
    Value="True">
    <ei:CallMethodAction
        TargetObject="{
            Binding Mode=OneWay,
            Path=Children,
            Source={StaticResource Foo}}"
        MethodName="Add"/>
</ei:DataTrigger>