2009-10-02 56 views
0

例這裏是輸入:需要的XPath返回節點集(祖父母[沒有叔叔] +母[沒有兄弟姐妹] +自什麼我正在尋找

<AAA> 
    <BBB id='1'> 
    <CCC id='1'> 
     <DDD id='1'/> 
     <DDD id='2'/> 
    </CCC> 
    <CCC id='2'> 
     <DDD id='3'/> 
     <DDD id='4'/> 
    </CCC> 
    </BBB> 
    <BBB id='2'> 
    <CCC id='3'> 
     <DDD id='5'/> 
     <DDD id='6'/> 
    </CCC> 
    <CCC id='4'> 
     <DDD id='7'/> 
     <DDD id='8'/> 
    </CCC> 
    </BBB> 
</AAA> 

這裏是節點集我要選擇(DDD ID爲1,這是父母和祖父母):

<BBB id='1'> 
    <CCC id='1'> 
     <DDD id='1'/> 
    </CCC> 
    </BBB> 

換句話說,從自我的直線祖父母,只有那些節點

回答

0
AAA\BBB[CCC\DDD\@id = '1'] 
+0

返回id = 1的DDD的兄弟姐妹和叔叔。我不想要兄弟姐妹或叔叔。 謝謝,雖然。 – 2009-10-02 14:49:04

0

假設出發點是用DDD@id = 1

. | parent::CCC | ancestor::BBB 

返回包含DDD,其母公司和其祖父母節點集。

1

任何XPath表達式的結果將是單個節點或節點列表;您將無法單獨使用XPath獲取樹結構。

但是,您可以選擇您請求的節點:您只需獲取它們的列表而不是層次結構。

下面是一個簡單的XPath,將做到這一點:

//DDD[@id = '1'] | //DDD[@id = '1']/.. | //DDD[@id = '1']/../.. 

注意使用//路徑可能會影響性能。您可能希望將//擴展爲/AAA/BBB/CCC/

如果要使用此功能,可以使用我的聯機工具here在任意XML上運行XPath表達式。

祝你好運!

0

我現在認爲我的問題沒有意義。實際上,我試圖用XPath來解決文檔構建問題 - XPath是不夠的。感謝所有迴應的人。

相關問題