我正在使用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
和RefType=Id
的{{1}},即上面的“第一个”?
我尝试了几种不同的尝试,其中包括:
RefId=0
但是这些选择了两个DetRs部分(因为StopNum RefId为0,我推测)。
答案 0 :(得分:3)
您希望顶级元素的所有 DetRs
子项:
/*/DetRs
有一个 RefInfo
孩子:
/*/DetRs
[RefInfo]
RefType
,其值为“ Id
”:
/*/DetRs
[RefInfo
[RefType
= 'Id
']
]
并且 RefId
的值 0 :
/*/DetRs
[RefInfo
[RefType
= 'Id
'
and
{
{1}} = 0
]
]
此XPath表达式正确选择了所提供的XML文档中所需的第一个RefId
元素。
当然,如果某人有其他风格偏好,上述表达也可以写成:
<强> DetRs
强>
答案 1 :(得分:1)
DetRs/Refinfo[RefType='Id' and RefId='0']/..