xpath:查找子节点,其中同一节点的另一个子节点具有特定值
以下是xml: <cat> <row> <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> <row> <col attr="w">aaa</col> <col attr="p">bbb</col> <col attr="g">nnn</col> <col attr="r">mmm</col> <col attr="n1">xxx</col> <col attr="n2">ccc</col> <col attr="s">vvv</col> </row> </cat> 111 222 333 444 555 666 777 aaa bbb nnn 嗯 xxx ccc vvv 我想要的是: 发现 //目录/行/列[@attr='n2'] 仅当在同一父节点中时 //cat/row/col[@attr='w']==111 //cat/row/col[@attr='w']==111正确的XPATH是:xpath:查找子节点,其中同一节点的另一个子节点具有特定值,xpath,Xpath,以下是xml: <cat> <row> <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>
//cat/row/col[@attr='n2'][parent::row/col[@attr='w' and text()='111'] ]
要获得输出,请执行以下操作:
<col attr="n2">666</col>
666
这里有一个替代的解决方案,我认为在您添加XPath表达式的每个节点中的条件时更可读,不需要使用<代码>父< /代码>:
//cat/row[./col[@attr='w' and text()='111']]/col[@attr='n2']
具有相同的输出:
<col attr="n2">666</col>
666
此xpath将找到attr=w和text=111的col,然后返回到其父级并查找col@attr=n2的父级子级
//row/col[@attr='w' and text()='111']/../col[@attr='n2']
你能修改你的问题使它更清楚吗?
//row/col[@attr='w' and text()='111']/../col[@attr='n2']