如何在两个目标节点之间形成具有未知数量的无关节点的Xpath

时间:2013-06-19 22:40:38

标签: xml parsing xpath xml-parsing

好的,这是我在前面提到的问题中遇到的问题。

How to form Xpath with irrelevant nodes in between two target nodes

以上是原始问题。 我希望能够从回答问题的人那里得到答案,但我不能这样,我会单独发布。

因为我担心,我的目标节点之间出现了更无关紧要的标签。让我假设我的目标标签和根之间可能有无限量的无关标签。我确信总是有目标/目标2和目标。

<body>
    <target>
         <annoying>
             ...
             <x>
                 <goal>Text I want to obtain</goal>
             </x>
             ...
         </annoying>
    </target>
    <target2>
         <noidea>
             ...
             <y>
                 <goal>Second Target I want to obtain</goal>
             </y>
             ...
         </noidea>
    </target2>
<body>

我希望可能会有以下内容:

//body/target/[*/]*goal

像正则表达式一样获得目标。 但是,确切地说,在Xpath之上并不是一个好的语法。

我还是要区分target和target2所以

//goal

不会回复我想要的结果。

是否有任何可以获得目标的Xpath?

3 个答案:

答案 0 :(得分:1)

要获得所有目标,只需使用:

//goal

如果您有目标广告代码,请在必要时使用//,因为在性能方面,“运算符”比/差得多:

/body/target//goal

答案 1 :(得分:0)

//target//goal

//target2//goal

诀窍没有意识到我可以使用//而不是开始

答案 2 :(得分:0)

Xpath Axes就是你想要的

一个节点上的

descendant-or-self::goal将选择所有具有目标名称的节点,从您所在的节点开始,并将所有节点嵌套在其中。