2015-07-12 66 views
1

我剛開始使用XPATH,並且我有一些關於它的功能的問題/它是否可以做我想做的事情。我在我的XML文檔中有以下結構:XPath獲取下一個項目

<root> 
    <top id="1"> 
    <item id="1"> 
     <sub id="A"></sub> 
     <sub id="B"></sub> 
    <item> 
    <item id="2"> 
     <sub id="A"></sub> 
     <sub id="B"></sub> 
    <item> 
    </top> 
    <top id="2"> 
    <item id="1"> 
     <sub id="A"></sub> 
     <sub id="B"></sub> 
    <item> 
    <item id="2"> 
     <sub id="A"></sub> 
     <sub id="B"></sub> 
     <sub id="C"></sub> 
    <item> 
    </top> 
</root> 

我將CurrentTop,CurrentItem和CurrentSub存儲在變量中。

var CurrentTop = "1", CurrentItem = "1", CurrentSub = "A"; 

使用XPath查詢,我希望能夠選擇下一子,無論它是在文檔中,如果下一子是不是在同一個項目的CURRENTITEM,我需要以獲得該信息。頂部

我正在使用Javascript。我知道這可能需要在多個查詢中完成。

例如: 下一個項目將是(按順序):

TOP ITEM SUB 

1 1 A 
1 1 B 
1 2 A 
1 2 B 
2 1 A 
2 1 B 
2 2 A 
2 2 B 
2 2 C 

我願意接受建議,以如何提高XML文檔格式爲好。

如果有幫助,我還使用NodeJS,XPath模塊和NPM上提供的XMLDOM模塊。

感謝

回答

1

我不知道node.js的,但是在XPath中可以使用following軸電流上下文元素後得到元素,無論目標元素在同父母或不是的。例如,獲得以下當前上下文元素,你可以用這句話最近sub元素:

following::sub[1] 

following-sibling軸線只能在同一母體內當前上下文元素之後發現元素的對比。