Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
xpath:查找子节点,其中同一节点的另一个子节点具有特定值_Xpath - Fatal编程技术网

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>

以下是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是:

//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']