Использование XPath на одном узле возвращает элементы во всех узлах - PullRequest
43 голосов
/ 26 августа 2010

Я анализирую документ XML, который выглядит примерно так:

<MyBook>
   <title>Favorite Poems</title>
   <issn>123-456</issn>
   <pages>45</pages>
</MyBook>
<MyBook>
   <title>Chocolate Desserts</title>
   <issn>654-098</issn>
   <pages>100</pages>
</MyBook>
<MyBook>
   <title>Jabberwocky</title>
   <issn>454-545</issn>
   <pages>19</pages>
</MyBook>

Я использую xpath, чтобы вытащить узлы MyBook и перебрать их так:вывод выглядит следующим образом:

Favorite PoemsChocolateDessertsJabberwocky
Favorite PoemsChocolateDessertsJabberwocky
Favorite PoemsChocolateDessertsJabberwocky

, как будто узел действительно является целым xmldoc.Однако, если я распечатываю узел внутри итератора, каждый раз, когда я ожидаю, просто один узел MyBook.Мне нужно иметь возможность последовательно извлекать дочерние узлы из каждого узла, а не все дочерние узлы одного и того же типа из всего документа.Что я делаю не так?

Ответы [ 2 ]

71 голосов
/ 26 августа 2010

При использовании //title выполняется поиск всех элементов <title>, начиная с корня документа.Используйте либо просто title, чтобы найти дочерние заголовки, либо .//title, если вы хотите найти заголовки, даже если они вложены в другие элементы.

0 голосов
/ 26 августа 2010

Удалите // из выражения xpath заголовка.

...