XML xpath, получить дочерний элемент корневого элемента
Ниже приведен XML, например.
<?xml version="1.0" encoding="utf-8"?>
<store d:mi="22">
<book price="12.99" d:price="Number" d:mi="4">
<title d:constr="String" d:mi="1">Sword of Honour</title>
<category d:constr="String" d:mi="2">fiction</category>
<author d:constr="String" d:mi="3">Evelyn Waugh</author>
</book>
<book price="8.99" d:price="Number" d:mi="9">
<sublist>
<title d:constr="String" d:mi="5">Moby Dick</title>
<category d:constr="String" d:mi="6">fiction</category>
<author d:constr="String" d:mi="7">Herman Melville</author>
<isbn d:constr="String" d:mi="8">0-553-21311-3</isbn>
</sublist>
</book>
<Note price="8.95" d:price="Number" d:mi="13">
<title d:constr="String" d:mi="10">50</title>
<category d:constr="String" d:mi="11">reference</category>
<author d:constr="String" d:mi="12">Nigel Rees</author>
</Note>
<Note price="22.99" d:price="Number" d:mi="18">
<title d:constr="String" d:mi="14">The Lord of the Rings</title>
<category d:constr="String" d:mi="15">fiction</category>
<author d:constr="String" d:mi="16">J. R. R. Tolkien</author>
<isbn d:constr="String" d:mi="17">0-395-19395-8</isbn>
</Note>
</store>
Используя приведенный ниже Xpath, я могу получить элемент store.
String name = "String";
String xpath = "//title[@d:constr='" + name + "']/parent::store";
Но нам нужно получить книгу (может появиться все, чего мы не знаем), которая является дочерью магазина (постоянное слово). Возможно ли это сделать?
1 ответ
Попробуйте использовать приведенное ниже выражение для соответствия родителя с обязательным title
игнорируя имя узла:
String name = "String";
String xpath = "//title[@d:constr='" + name + "']/parent::*";
Также обратите внимание, что store
не является родителем title
, вы должны использовать "//title/ancestor::store"
вместо "//title/parent::store"
Если вы просто хотите, чтобы ребенок store
:
//store/child::*
Первый ребенок:
//store/child::*[1]