我有以下示例文档:
<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 表达式,它选择具有匹配类属性的给定节点的所有直接兄弟姐妹,而不是任何兄弟姐妹。<p class="b">
在上面的例子中,应该选择前两个AB;同样是两张<p class="a">
CD,同样是第五张单曲<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.
最后一个表达式也选择了第五个兄弟姐妹,尽管中间有不匹配的兄弟姐妹。
如何仅选择具有相同class
值的直接兄弟姐妹?
编辑澄清:注意最后两个是个人选择,而不是兄弟姐妹!
编辑我在这里保存了一个例子。基于的 Xpath 表达式/root/p[1]
应该是 select A, B, C, D
。