2012-04-07 117 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

相關問題