XPath:通过非父选择器寻址值
XPath: address a value by a selector that is not parent
我如何通过 XPath 解决一个选择器不在它之上(但在同一级别)的元素?
例如我想要名称为 B 的项目的值。不确定是否热,因为名称和值不在父关系中。
<root>
<item>
<name>A</name>
<value>1</value>
</item>
<item>
<name>B</name>
<value>2</value>
</item>
<item>
<name>C</name>
<value>3</value>
</item>
</root>
这可以简单地完成如下:
//item[./name='B']/value
这字面意思是:找到包含 name
= "B" 的直接子元素的 item
元素 -> 找到这个 item
元素的直接子元素 value
.
如果 name
和/或 value
不是 item
的直接子代,则上述表达式将为
//item[.//name='B']//value
另一种方法,如果每个 item
里面只有一个 name
和一个 value
可以是:
//item[name='B']/following-sibling::value
//name[text()='B']/following-sibling::value
获取元素 name 的标签 value 的 sibling with text [=13] =]B
要提取名称为 B 的项目的值,有多种方法如下:
使用以下:
//item/name[text()='B']//following::value[1]
使用跟随兄弟姐妹:
//item/name[text()='B']//following-sibling::value[1]
使用祖先:
//name[text()='B']//ancestor::item[1]//value
我如何通过 XPath 解决一个选择器不在它之上(但在同一级别)的元素?
例如我想要名称为 B 的项目的值。不确定是否热,因为名称和值不在父关系中。
<root>
<item>
<name>A</name>
<value>1</value>
</item>
<item>
<name>B</name>
<value>2</value>
</item>
<item>
<name>C</name>
<value>3</value>
</item>
</root>
这可以简单地完成如下:
//item[./name='B']/value
这字面意思是:找到包含 name
= "B" 的直接子元素的 item
元素 -> 找到这个 item
元素的直接子元素 value
.
如果 name
和/或 value
不是 item
的直接子代,则上述表达式将为
//item[.//name='B']//value
另一种方法,如果每个 item
里面只有一个 name
和一个 value
可以是:
//item[name='B']/following-sibling::value
//name[text()='B']/following-sibling::value
获取元素 name 的标签 value 的 sibling with text [=13] =]B
要提取名称为 B 的项目的值,有多种方法如下:
使用以下:
//item/name[text()='B']//following::value[1]
使用跟随兄弟姐妹:
//item/name[text()='B']//following-sibling::value[1]
使用祖先:
//name[text()='B']//ancestor::item[1]//value