Итак, у меня есть документ, который выглядит как
<a xmlns="uri1" xmlns:pre2="uri2">
<b xmlns:pre3="uri3">
<pre3:c>
<stuff></stuff>
<goes></goes>
<here></here>
</pre3:c>
<pre3:d xmlns="uri4">
<under></under>
<the></the>
<tree></tree>
</pre3:d>
</b>
</a>
. Мне нужно выражение xpath, которое даст мне <под>
.
У этого есть namespaceURI uri4.
Сейчас мое выражение выглядит так:
//ns:a/ns:b/pre3:d/pre4:under
У меня есть менеджер пространств имен, добавляющий 'ns' для пространства имен по умолчанию (в данном случае uri1), и я определил его с pre2, pre3 и pre4 для uri2, uri3 и uri4 соответственно.
Я получаю ошибку "Выражение должно оцениваться как набор узлов . "
Я знаю, что узел существует. Я знаю, что все до pre4: under
в моем xpath работает нормально, поскольку я без проблем использую его в остальной части документа. Дополнительный pre4: under
вызывает ошибку, и я не уверен, почему.
Есть идеи?
Спасибо.
Решение:
Спасибо всем за вашу настойчивость что правильно - так и было. Но ... в моем коде у меня было «pre4» как «64» (переменная), и мне не нравилось целое число для префикса. Изменение его на "d" + myintvariable сработало.