可以查找具有特定名称的元素的实例,而不管位置如何

时间:2017-06-17 10:01:00

标签: xml xpath

我有这个XML,我正在尝试从中提取序列号。

但是,序列号不在同一级别,因此我发现很难完成它,因为我使用的工具要求我用一个XPATH表达式来完成它。

<rpc-reply>
    <chassis-inventory>
        <chassis junos:style="inventory">
            <name>Chassis</name>
            <serial-number>AAABBB</serial-number>
            <description>SRX220H</description>
            <chassis-module>
                <name>Routing Engine</name>
                <version>REV 23</version>
                <part-number>750-031175</part-number>
                <serial-number>XXXYYY</serial-number>
                <description>RE-SRX220H</description>
            </chassis-module>
            <chassis-module>
                <name>FPC 0</name>
                <description>FPC</description>
                <chassis-sub-module>
                    <name>PIC 0</name>
                    <description>8x GE Base PIC</description>
                </chassis-sub-module>
            </chassis-module>
            <chassis-module>
                <name>Power Supply 0</name>
            </chassis-module>
        </chassis>
    </chassis-inventory>
    <cli>
        <banner></banner>
    </cli>
</rpc-reply>

我想提取的数据是:

<name>Chassis</name>
<serial-number>AAABBB</serial-number>

<name>Routing Engine</name>
<serial-number>XXXYYY</serial-number>

有什么想法吗?

亲切的问候,

帕特里克

2 个答案:

答案 0 :(得分:1)

尝试使用下面的XPath表达式来获取所需的输出:

//chassis-module[1]//preceding::*[name()=("name", "serial-number")]

答案 1 :(得分:0)

我们最终解决了#34;就像这样。不确定这是否是纯XPath,但它有效:

/rpc-reply//chassis | /rpc-reply//chassis-module

感谢所有破译我写得不好的XPath问题的尝试!

/帕特里克