Pytanie XPath: Jak sprawdzić, czy atrybut istnieje?


Biorąc pod uwagę następujący kod XML, jak napisać kwerendę XPath do pobierania węzłów, w których atrybut foo istnieje ?:

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

76
2017-09-17 18:21


pochodzenie




Odpowiedzi:


Krótkie i słodkie:

//*[@foo]

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


127
2017-09-17 18:26



nie działa w IE - Mykola G.
To nie działa dla mnie w PHP 7.0.17. - Jay Bienvenu


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

//*[boolean(@foo)]

19
2017-07-18 11:21



dzięki. Ten działa w IE! - Mykola G.


Jeśli używasz i xpath, może to pomoże:

count(//*[@foo])

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


8
2017-09-23 09:12