2012-04-07 107 views
29

请考虑以下非常简化的示例。找到指定节点后找到兄弟节点

<n></n> 
<k></k> 
<m></m> 
<k></k> 

我如何搜索后m点的第一k兄弟姐妹?基本上,找到一些节点,然后继续从该节点搜索。

+1

为什么@Neil的回答及其评论消失了? – 2013-11-07 13:54:08

回答

57

我如何搜索后m点的第一k兄弟姐妹?基本上,找到 某个节点,然后继续从该节点搜索。

假设我们有以下的良好的XML文档:

<t> 
    <n></n> 
    <k></k> 
    <m></m> 
    <k></k> 
</t> 

然后将下面的XPath表达式

/*/m[1]/following-sibling::k[1] 

选择第一的第一k以下同胞m XML文档的顶层元素的子元素。

+0

太复杂了。 – 2013-11-06 10:58:08

+0

事实上,昨天我想删除我的倒票,但该网站告诉我,24分钟后已经太晚了。那就是生活。 – 2013-11-07 13:52:23

4

有趣的问题:试试吧........

<a> 
<n></n> 
<k></k> 
<m></m> 
<k></k> <==== 
<k></k> 
<m></m> 
<k></k> 
</a> 


    /a/k[. = preceding::m][1] 
+0

这个答案很有趣,但它从**之后的第一个“m”开始,而不是从当前节点**开始。 – 2013-11-06 10:51:42

+0

另外,前面的'm'是一个反向引用吗?那么这不会比首先寻找'm'的解决方案性能低吗? (不知道) – jpaugh 2016-01-21 16:06:56