Frage XPath: Wie überprüft man, ob ein Attribut existiert?


Wie schreibe ich eine XPath-Abfrage, um Knoten, wo das Attribut ist, zu schreiben foo existiert ?:

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

76
2017-09-17 18:21


Ursprung


Antworten:


Kurz und bündig:

//*[@foo]

Natürlich sollten Sie einen spezifischeren Ausdruck verwenden. Aber mit [@attributeName] Sie erhalten alle Knoten, die dieses Attribut haben.


126
2017-09-17 18:26



Verwenden Sie den folgenden XPath-Ausdruck

//*[boolean(@foo)]

19
2017-07-18 11:21



Wenn Sie und XPath verwenden, kann Ihnen das vielleicht helfen:

count(//*[@foo])

Es wird die Anzahl der Knoten / untergeordneten Elemente mit dem Attribut foo zurückgegeben


8
2017-09-23 09:12