XPath: как проверить, существует ли атрибут?


106

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

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

Ответы:


166

Коротко и мило:

//*[@foo]

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


27

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

//*[boolean(@foo)]

9

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

count(//*[@foo])

он вернет количество node / child, у которых есть атрибут foo

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.