Выражение XPath для проверки NodeList - PullRequest
2 голосов
/ 13 сентября 2011

У меня есть NodeList в Java и этот XML-файл (только его часть)

если у меня есть

<Book title="aaa" author="bbb" price="12" year="2011" />

Я могу использовать выражение XPath, чтобы проверить, проверены ли некоторые условия, например:

local-name(.) = 'Book' and @title local-name(.) = 'Book' and @title

Если результат выполнения выражения XPath равен true, сделайте что-нибудь, иначе сделайте что-нибудь еще. В этом случае я построил выражение непосредственно на узле, и это нормально.

В случае NodeList, как я могу выполнить ту же задачу? Я хотел бы видеть, если NodeList (org.w3c.NodeList в Java) имеет, например, некоторые узлы, но с использованием выражения XPath.

Спасибо Лука

Ответы [ 2 ]

1 голос
/ 13 сентября 2011

Вы можете перебирать узлы в NodeList и применять свой xpath к каждому узлу.

0 голосов
/ 14 сентября 2011

Если набор узлов находится в переменной $v, то следующее выражение XPath:

$v[self::Book and @title]

выбирает все узлы из $v, которые являются Book элементами и также имеют атрибутnamed title.

Если набор узлов может быть получен в результате оценки определенного выражения XPath, то вы можете заменить $v следующим выражением:

yourExpression[self::Book and @title]

ДляНапример, если рассматриваемый набор узлов состоит из всех узлов, возвращаемых /*/*, то одно выражение, которое выбирает требуемые узлы из этого набора узлов:

/*/*[self::Book and @title]
...