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>
Byron Whitlock
quelle

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.

Felix Kling
quelle
25

Verwenden Sie den folgenden XPath-Ausdruck

//*[boolean(@foo)]
Ru5
quelle
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

fritz
quelle