XPath获取下一个项目

时间:2015-07-12 21:42:31

标签: javascript xml node.js xpath

我刚刚开始使用XPATH,我对它的功能/是否可以做我想做的事情有一些疑问。我的XML文档中有以下结构:

<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查询,我希望能够选择下一个Sub而不管它在文档中的位置,如果下一个Sub与CurrentItem不在同一个Item中,我需要获取该信息同样。 Top

也是如此

我正在使用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文档格式的建议。

如果有帮助,我也在NPM上使用NodeJS,XPath模块和XMLDOM模块。

由于

1 个答案:

答案 0 :(得分:1)

我不知道node.js,但是在XPath中你可以使用following轴来获取当前上下文元素之后的元素,而不管目标元素是否在同一个父元素中。例如,要在当前上下文元素后面获取最近的sub元素,可以使用以下表达式:

following::sub[1] 

following-sibling轴形成对比,后者只能找到同一父元素中当前上下文元素之后的元素。