我刚刚开始使用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模块。
由于
答案 0 :(得分:1)
我不知道node.js,但是在XPath中你可以使用following
轴来获取当前上下文元素之后的元素,而不管目标元素是否在同一个父元素中。例如,要在当前上下文元素后面获取最近的sub
元素,可以使用以下表达式:
following::sub[1]
与following-sibling
轴形成对比,后者只能找到同一父元素中当前上下文元素之后的元素。