gpt4 book ai didi

xml - 揭秘 XPATH

转载 作者:行者123 更新时间:2023-12-03 17:10:17 28 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





How does XPath deal with XML namespaces?

(2 个回答)


5年前关闭。




我有这个 XML

<rpc-reply xmlns:junos="http://xml.juniper.net/junos/12.1X46/junos">
<environment-information xmlns="http://xml.juniper.net/junos/12.1X46/junos-chassis">
<environment-item>
<name>Routing Engine</name>
<class>Temp</class>
<status>Failed</status>
<temperature junos:celsius="50">50 degrees C / 122 degrees F</temperature>
</environment-item>
<environment-item>
<name>Routing Engine CPU</name>
<status>Absent</status>
</environment-item>
<environment-item>
<name>Power Supply 0</name>
<class>Power</class>
<status>OK</status>
</environment-item>
<environment-item>
<name>Power Supply 1</name>
<class>Power</class>
<status>Absent</status>
</environment-item>
</environment-information>
<cli>
<banner></banner>
</cli>
</rpc-reply>

我想显示所有没有状态 =“缺席”的“环境项目”。

我已经尝试了许多站点来测试 XPATH,但未能找到答案。我认为它的方式是 /rpc-reply/environment-information/*[not(contains(status, 'Absent'))] , 或 /rpc-reply/environment-information[1]/*[not(contains(status, 'Absent'))]但它不起作用。

两个问题:
  • 我的 XPATH 有什么问题?
  • 有可靠的网站可以测试吗?我已经浏览了谷歌的前三页,但由于我无法让 XPATH 处理其中任何一个页面,我很难评估它们。

  • 感谢您的任何解释。如果非要选,宁愿买鱼竿也不愿买鱼! :)

    亲切的问候,
    帕特里克

    最佳答案

    首先,您尝试过的 XPath 测试器站点可能工作得非常好。

    您的表达式不起作用的原因是这一点:<environment-information xmlns="http://xml.juniper.net/junos/12.1X46/junos-chassis">
    这意味着 <environment-information>并且它下面的所有内容都在不同的 namespace 中,并且您的 xpath 没有反射(reflect)这一点。

    有两种方法可以解决这个问题:
    1. 您可以在运行 xpath 表达式的任何引擎中声明命名空间绑定(bind)。没有标准的方法来执行此操作,解决方案将根据引擎的实现而有所不同。请注意,由于 <rpc-reply>在默认命名空间中,您必须绑定(bind) http://xml.juniper.net/junos/12.1X46/junos-chassis到不同的前缀并执行以下操作:/rpc-reply/MY_PREFIX:environment-information/*[not(contains(MY_PREFIX:status, 'Absent'))] .
    2. 如果您的引擎支持 XPath 2.0 或更高版本,您可以使用如下命名空间通配符:/rpc-reply/*:environment-information/*[not(contains(*:status, 'Absent'))]

    关于xml - 揭秘 XPATH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42681920/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com