0

这是xml:

<猫>
    <行>
       <col attr="w">111</col>
       <col attr="p">222</col>
       <col attr="g">333</col>
       <col attr="r">444</col>
       <col attr="n1">555</col>
       <col attr="n2">666</col>
       <col attr="s">777</col>
    </row>
    <行>
       <col attr="w">aaa</col>
       <col attr="p">bbb</col>
       <col attr="g">nnn</col>
       <col attr="r">嗯</col>
       <col attr="n1">xxx</col>
       <col attr="n2">ccc</col>
       <col attr="s">vvv</col>
    </row>
</猫>

我要找的东西:找到

//cat/row/col[@attr='n2']

仅,如果在同一个父节点中

//cat/row/col[@attr='w']==111
4

3 回答 3

1

这是一个替代解决方案,我认为它更具可读性,因为您可以随时在 XPath 表达式的每个节点中添加条件,而无需使用parent

//cat/row[./col[@attr='w' and text()='111']]/col[@attr='n2']

具有相同的输出:

<col attr="n2">666</col>
于 2013-05-15T10:21:46.123 回答
1

您正确的 XPATH 是:

//cat/row/col[@attr='n2'][parent::row/col[@attr='w' and text()='111'] ]

获得输出:

<col attr="n2">666</col>
于 2013-05-15T10:15:19.140 回答
0

此 xpath 将找到 attr=w 和 text='111' 的 col,然后返回其父级并使用 col @attr=n2 查找父级的子级

//row/col[@attr='w' and text()='111']/../col[@attr='n2']
于 2013-05-20T19:36:41.990 回答