How can I address an elementy by XPath thats selector is not above it (but at the same level)?
E.g. I want to have the value of the item with name B. Not sure hot to do it because name and value are not in a parent relationship.
<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>
CodePudding user response:
This can be done simply as following:
//item[./name='B']/value
This literally means: find item element containing a direct child with name = "B" -> find this item element direct child value.
In case name and / or value are not the direct children of item the above expression will be
//item[.//name='B']//value
Another approach, in case inside each item there is only single name and single value can be:
//item[name='B']/following-sibling::value
CodePudding user response:
//name[text()='B']/following-sibling::value
Gets the sibling with tag value of an element name with text B
