Xpath是否仅选择存在子元素的节点?
这应该很容易,但它给我带来了麻烦。鉴于这种结构:Xpath是否仅选择存在子元素的节点?,xpath,Xpath,这应该很容易,但它给我带来了麻烦。鉴于这种结构: <root> <a> <b/> </a> <a/> </root> 我试图构造一个xpath表达式,它只提供非空的“a”元素,即具有子元素的元素。因此,我希望返回“a”的第一个实例,而不是第二个 到目前为止,我有“/root/a/self::*”,但这将返回我两个a /root/a[count(*)>0] 将为任何“a”节点提供任何类
<root>
<a>
<b/>
</a>
<a/>
</root>
我试图构造一个xpath表达式,它只提供非空的“a”元素,即具有子元素的元素。因此,我希望返回“a”的第一个实例,而不是第二个
到目前为止,我有“/root/a/self::*”,但这将返回我两个a
/root/a[count(*)>0]
将为任何“a”节点提供任何类型的子节点此节点有效
/root/a[count(*)>0]
/root/a[*]
甚至
//a[*]
我还发现这是可行的:/root/a[child::*],但我会相信Adrian的回答也是可行的!:)仅当您希望将其放入XML文件(例如XSLT脚本)中时。不过,这只是一个存储细节,我很确定XPath规范使用“>”:)作为额外的一点,您可以使用count(b)来指定要计算哪些子节点。或者如果您只关心名为“b”的子元素:
/root/a[b]