XPath: Jak sprawdzić, czy atrybut istnieje?


104

Biorąc pod uwagę następujący kod XML, jak napisać zapytanie XPath w celu ściągnięcia węzłów, w których fooistnieje atrybut ? :

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

Odpowiedzi:


163

Krótkie i słodkie:

//*[@foo]

Oczywiście powinieneś użyć bardziej konkretnego wyrażenia. Ale wraz z [@attributeName]tobą otrzymujesz wszystkie węzły, które mają ten atrybut.


25

Użyj następującego wyrażenia XPath

//*[boolean(@foo)]

8

Jeśli używasz i xpath, może ci to pomóc:

count(//*[@foo])

zwróci liczbę węzłów / dzieci, które mają atrybut foo

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.