XPath は X の子を持つノードのみを返すことができますか?
質問
XPath を使用して、特定の子要素を持つノードのみを選択することはできますか?たとえば、この XML では、「bar」の子を持つペットの要素のみが必要です。したがって、結果として得られるデータセットには、 lizard
そして pig
この例の要素:
<pets>
<cat>
<foo>don't care about this</foo>
</cat>
<dog>
<foo>not this one either</foo>
</dog>
<lizard>
<bar>lizard should be returned, because it has a child of bar</bar>
</lizard>
<pig>
<bar>return pig, too</bar>
</pig>
</pets>
この Xpath はすべてのペットを提供します。 "/pets/*"
, ただし、name の子ノードを持つペットのみが必要です 'bar'
.
解決
栄光のすべてがここにあります
/pets/*[bar]
英語:の子供たちをすべて私に与えてください pets
子供がいる人 bar
他のヒント
/pets/child::*[child::bar]
申し訳ありませんが、前の返信に対するコメントを見ていませんでした。
しかし、この場合、私はむしろ、 descendant::
軸には、指定された以下のすべての要素が含まれます。
/pets[descendant::bar]
子についてより具体的にしたい場合に備えて、子に対してセレクターを使用することもできます。
例:
<pets>
<cat>
<foo>don't care about this</foo>
</cat>
<dog>
<foo>not this one either</foo>
</dog>
<lizard>
<bar att="baz">lizard should be returned, because it has a child of bar</bar>
</lizard>
<pig>
<bar>don't return pig - it has no att=bar </bar>
</pig>
</pets>
今、あなたはすべてのことだけを気にします pets
子供がいる bar
属性を持っているもの att
価値のあるもの baz
. 。次の xpath 式を使用できます。
//pets/*[descendant::bar[@att='baz']]
結果
<lizard>
<bar att="baz">lizard should be returned, because it has a child of bar</bar>
</lizard>
所属していません StackOverflow