xml - 为什么元素在XPath中选择太多元素?

标签 xml xpath

我正在一个项目中,我需要能够转换XML文档,并且需要能够标识NameOpportunity,但是xpath表达式//Name返回< cc>和NameOwner

Demo

XML示例:

  <root xmlns:foo="http://www.foo.org/" xmlns:bar="http://www.bar.org">
    <Opportunity>
      <Owner>
        <Name>Christian Bale</Name>
      </Owner>
      <Name>Opportunity Name</Name>
    </Opportunity>
  </root>


我似乎找不到仅返回机会名称的谓词。由于这两个元素都是其级别上的最后一个Name元素,因此OpportunityName仍会返回两者。

是否可以编写仅返回//Name[last()]//Name[1]而不返回Name Opportunity名称的XPath表达式?还是可以在选择匹配的音符之一后消除它?

最佳答案

了解//选择后代(或自身),因此它会按设计跳过继承。要指定遗产,请使用/,它默认沿子轴进行选择:

/root/Opportunity/Name


然后可以分别从

/root/Opportunity/Owner/Name


按照要求。

关于xml - 为什么元素在XPath中选择太多元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48689578/

相关文章:

xml - 如何转换基本 XML 架构以适应不同用途?

java - 自定义字体单选按钮未检测到单击

javascript - XMLHttpRequest:文档元素后的垃圾

java - 升级到 Spring Security 4 后尝试登录时出现 404

java - Android - 使用 XPath 解析 XML

xml - XQuery:如何使用内部 for 循环的结果来对外部 for 循环的结果进行排序?

xml - XPath - 测试是否至少有一个节点具有给定值

android - 如何在 XML 布局中显示文本 "\n"

javascript - 从 ajax 结果中提取 XML 数据

xpath - 为什么这个 xpath 选择器失败?