XPath:属性が存在するかどうかを確認する方法は?


104

次のXMLを前提として、属性fooが存在するノードをプルするXPathクエリをどのように記述しますか?

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

回答:


163

短くて甘い:

//*[@foo]

もちろん、より具体的な表現を使用する必要があります。しかし、[@attributeName]あなたはその属性を持つすべてのノードを取得します。


25

次のXPath式を使用します。

//*[boolean(@foo)]

8

xpathを使用している場合、これはおそらくあなたを助けることができます:

count(//*[@foo])

属性fooを持つノード/子の数を返します

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.