Ответ 1
Короткий и сладкий:
//*[@foo]
Конечно, вы должны использовать более конкретное выражение. Но с [@attributeName]
вы получаете все узлы, которые имеют этот атрибут.
Учитывая следующий XML, как я могу написать запрос XPath для вывода узлов, где существует атрибут foo
?:
<node1>
<node2>
<node3 foo='bar'></node3>
<node3></node3>
<node3 bar='foo'></node3>
<node3 foo='foobar'></node3>
</node2>
</node1>
Короткий и сладкий:
//*[@foo]
Конечно, вы должны использовать более конкретное выражение. Но с [@attributeName]
вы получаете все узлы, которые имеют этот атрибут.
Используйте следующее выражение XPath
//*[boolean(@foo)]
Если вы используете и xpath, это может помочь вам:
count(//*[@foo])
он вернет счетчик node/child, у которого есть атрибут foo