2015-07-12 67 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轴线只能在同一母体内当前上下文元素之后发现元素的对比。