我有一个XML,我想找到评论中所有粗体的元素(第二次出现评论)。
为此,我写了一个xpath:
输入/ a / b [@Name =' FULLTEXT'] / comment()[包含(。,' START OF CUSTOMIZATIONS')] / following :: * [not( preceding :: comment()[contains(。,' END OF CUSTOMIZATIONS')])
但是,不知怎的,它不起作用。知道xpath有什么问题吗?
<Type>
<a>
<!--START OF CUSTOMIZATIONS-->
<c />
<!--END OF CUSTOMIZATIONS-->
<b Name="FULLTEXT">
<c />
<c />
<c />
<c />
<c />
**<!--START OF CUSTOMIZATIONS-->
<c />
<c />
<c />
<!--END OF CUSTOMIZATIONS-->**
<c />
</b>
</a>
</Type>
答案 0 :(得分:0)
使用following-sibling
和preceding-sibling
代替following
和preceding
(为了便于阅读而包装):
Type/a/b[@Name='FULLTEXT']
/comment()[contains(.,'START OF CUSTOMIZATIONS')]
/following-sibling::*[not(preceding-sibling::comment()[contains(.,'END OF CUSTOMIZATIONS')])]
使用not(preceding-sibling::comment()[contains(.,'END OF CUSTOMIZATIONS')])
所有c
个元素都会被过滤掉,因为它们都有前面的注释节点,这是第一次出现<!--END OF CUSTOMIZATIONS-->
。