次のサンプルドキュメントがあります。
<root>
<p class="b">A</p>
<p class="b">B</p>
<p class="a">C</p>
<p class="a">D</p>
<p class="b">E</p>
<x>
<p class="b">F</p>
</x>
</root>
兄弟ではなく、一致するクラス属性を持つ特定のノードのすべての直接の兄弟を選択する xpath 式を探しています。上記の例では、最初の 2 つの<p class="b">
AB を選択する必要があります。同様に2枚の<p class="a">
CD、同様に5番目のシングル<p class="b">
Eは、直接の兄弟がいないためです。同様に、 の中に単一の<p class="b">
F があり<x>
ます。このコンテキストでは、B と C は異なるクラス属性の値を持っているため、直接の兄弟ではないことに注意してください。
私が持っているのはこれです:
xml.xpath("//p") # This selects all six <p> elements.
xml.xpath("//p[@class='b']") # This selects all four <p class="b"> elements.
xml.xpath("//p/following-sibling::p[@class='b']") # This selects all <p class="b"> sibling elements, even though not direct siblings.
最後の式は、5 番目の兄弟も選択しますが、間に一致しない兄弟があります。
class
同じ値を持つ直接の兄弟のみを選択するにはどうすればよいですか?
編集明確にするために:最後の2つが兄弟ではなく個々の選択であることに注意してください!
編集ここに例を保存しました。に基づく Xpath 式/root/p[1]
は、select を想定していますA, B, C, D
。