XPath: Как проверить, существует ли атрибут? - PullRequest
92 голосов
/ 17 сентября 2010

Учитывая следующий XML, как мне написать запрос XPath для извлечения узлов, где существует атрибут foo?

<node1>
  <node2>
    <node3 foo='bar'></node3>
    <node3></node3>
    <node3 bar='foo'></node3>
    <node3 foo='foobar'></node3>
  </node2>
</node1>

Ответы [ 3 ]

145 голосов
/ 17 сентября 2010

Коротко и сладко:

//*[@foo]

Конечно, вы должны использовать более конкретное выражение.Но с [@attributeName] вы получите все узлы, которые имеют этот атрибут.

22 голосов
/ 18 июля 2012

Используйте следующее выражение XPath

//*[boolean(@foo)]
8 голосов
/ 23 сентября 2010

Если вы используете xpath, это может вам помочь:

count(//*[@foo])

вернет счетчик узла / потомка с атрибутом foo

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...