首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无论位置如何,都可以找到具有特定名称的元素的实例

无论位置如何,都可以找到具有特定名称的元素的实例
EN

Stack Overflow用户
提问于 2017-06-17 18:01:00
回答 2查看 45关注 0票数 0

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

但是,序列号不在同一级别,所以我发现很难实现它,因为我使用的工具需要使用一个XPATH表达式。

代码语言:javascript
运行
复制
<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>

我希望提取的数据是:

代码语言:javascript
运行
复制
<name>Chassis</name>
<serial-number>AAABBB</serial-number>

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

有什么想法吗?

致以亲切的问候,

帕特里克

EN

回答 2

Stack Overflow用户

发布于 2017-06-17 18:32:33

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

代码语言:javascript
运行
复制
//chassis-module[1]//preceding::*[name()=("name", "serial-number")]
票数 1
EN

Stack Overflow用户

发布于 2017-06-22 01:16:08

我们最终像这样“解决”了它。不确定这是否是纯XPath,但它起作用了:

代码语言:javascript
运行
复制
/rpc-reply//chassis | /rpc-reply//chassis-module

感谢你为我破解我写得不好的XPath问题所做的一切努力!

/Patrik

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44603230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档