什么XML结构与此XPath匹配?

时间:2014-02-25 22:34:25

标签: xml xpath

我有这个XPath,我不太了解它。 xml文件结构是什么样的?

/child::p/child::c[preceding-sibling::* = following-sibling::* and preceding-sibling::* != following-sibling::*]

2 个答案:

答案 0 :(得分:1)

这是非常奇怪的xpath。

这是文件

<p>
<d>x</d>
<d>1</d>
<c>d</c>
<p>x</p>
<d>2</d>
</p>

<c>d</c>

与您的xpath匹配。

答案 1 :(得分:1)

表达式

child::c[preceding-sibling::* = following-sibling::* and preceding-sibling::* != following-sibling::*]

表示“查找子元素c,其前兄弟值等于c的后续兄弟值,并且还有一个不等于它的前兄弟值跟随兄弟价值。

在上面给出的XML中,

<p>
<d>x</d>
<d>1</d>
<c>d</c>
<p>x</p>
<d>2</d>
</p>

应用xpath将导致

<c>d</c>

因为满足条件preceding-sibling::* = following-sibling::*(在这种情况下分别是<d>x</d><p>x</p>)并且条件preceding-sibling::* != following-sibling::*也得到满足(先前的兄弟值:{{1 }和x;跟随 - 兄弟值:1x)。如果从上面的XML中删除前一个兄弟2,那就是:

<d>x</d>

你将没有输出。