xml - Xpath兄弟条件测试?

标签 xml xpath

我正在使用 VB.net (2003),并在 xml 文档上调用 SelectNodes 方法。
如果我有一个文档:

<InqRs>  
  <DetRs>  
    <RefInfo>  
      <RefType>StopNum</RefType>  
      <RefId>0</RefId>  
    </RefInfo>  
    <RefInfo>  
      <RefType>Id</RefType>  
      <RefId>0</RefId>  
    </RefInfo>  
  </DetRs>  
  <DetRs>  
    <RefInfo>  
      <RefType>StopNum</RefType>  
      <RefId>0</RefId>  
    </RefInfo>  
    <RefInfo>  
      <RefType>Id</RefType>  
      <RefId>1</RefId>  
    </RefInfo>  
  </DetRs>  
</InqRs>

如何仅选择具有 RefType=IdRefId=0DetRs,即上面的“第一个” ?

我尝试了几种不同的尝试,其中包括:

InqRs/DetRs[RefInfo/RefType='Id' and RefInfo/RefId='0']  
InqRs/DetRs[RefInfo/RefType='Id'][RefInfo/RefId='0']  

但是这些选择了两个 DetRs 部分(因为 StopNum 我认为 RefId 为 0)。

最佳答案

您想要顶部元素的所有 DetRs 子元素:

    /*/DetRs

有一个 RefInfo 子项:

    /*/DetRs
[引用信息]

RefType 的值为“Id”:

    /*/DetRs
[RefInfo
[RefType='Id']
]

它的 RefId 值为 0:

    /*/DetRs
[RefInfo
[RefType='Id'
                 
                   RefId=0
                   ]
]

这个 XPath 表达式正确地选择了所提供的 XML 文档中所需的第一个 DetRs 元素

当然,如果有人有其他风格偏好,上面的表达式也可以写成:

    /*/DetRs[RefInfo[RefType='Id' and RefId=0]]

关于xml - Xpath兄弟条件测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/365750/

相关文章:

java - 算术异常 : Divide by zero with table layout dynamically in Android

java - 使用java dom解析器进行XML解析将xml声明转换为元素

sql-server - 如何在 SQL Server 中的 XML 投影中输出原始 xml,而不引入额外的 xml 根元素

java - 无法从 Spring Boot Controller 获取 web.xml 中的上下文参数

javascript - 如何计算 xml 元素的子元素数量?

xml - XSLT - 如果属性值字符长度大于 10,则为 bool 值 true

xml - 如果使用 PowerShell 不存在,如何添加属性?

java - 如何选择最佳的自动化工具与selenium的组合

python - 如何使用 Selenium Xpath 在一页中查找具有相同路径的多个元素

java - 为什么 Java 向我的 XPath 添加反斜杠?