XPath: Wie überprüfe ich, ob ein Attribut vorhanden ist?


104

Wie schreibe ich angesichts des folgenden XML eine XPath-Abfrage, um Knoten abzurufen, auf denen das Attribut foovorhanden ist?:

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

Antworten:


163

Kurz und bündig:

//*[@foo]

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


25

Verwenden Sie den folgenden XPath-Ausdruck

//*[boolean(@foo)]

8

Wenn Sie und xpath verwenden, kann dies möglicherweise hilfreich sein:

count(//*[@foo])

Es wird die Anzahl der Knoten / Kinder zurückgegeben, die das Attribut foo haben

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.