Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml Xpath同级条件测试?_Xml_Xpath - Fatal编程技术网

Xml Xpath同级条件测试?

Xml Xpath同级条件测试?,xml,xpath,Xml,Xpath,我正在使用VB.net(2003),并对xml文档调用SelectNodes方法。 如果我有文件: <InqRs> <DetRs> <RefInfo> <RefType>StopNum</RefType> <RefId>0</RefId> </RefInfo> <RefInfo> <RefTy

我正在使用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>
但是这些选择了两个DetRs部分(因为StopNum
我想是0的RefId)

像这样。您不需要XPath表达式中的顶级InqRs,尽管这并不有害。您可能也不关心DetRs,但假设您关心DetRs,您希望说“给我Refinfo元素的父元素,它具有以下规范”


您需要顶部元素的所有子元素:

/*/DetRs

具有
RefInfo
子项的:

/*/DetRs

[RefInfo]

具有值为“
Id
”的引用类型的:

/*/DetRs

[RefInfo

[
RefType
='
Id
']
]

它有一个
RefId
,值0

/*/DetRs

[RefInfo

[
RefType
='
Id
'

RefId
=0
]
]

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

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


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

@Mark:点击问题旁边的(白色)复选标记,您可以接受最佳答案。
InqRs/DetRs[RefInfo/RefType='Id' and RefInfo/RefId='0']  
InqRs/DetRs[RefInfo/RefType='Id'][RefInfo/RefId='0']  
DetRs/Refinfo[RefType='Id' and RefId='0']/..