Html 如何正确使用XPath前置同级?
我在选择以前的兄弟姐妹时遇到困难。以下是html:Html 如何正确使用XPath前置同级?,html,xml,xpath,nokogiri,Html,Xml,Xpath,Nokogiri,我在选择以前的兄弟姐妹时遇到困难。以下是html: <div> <h2>Apple</h2> <div class="row">A</div> <h2>Banana</h2> <div class="row">B</div> <h2>Strawberry</h2> <div class="
<div>
<h2>Apple</h2>
<div class="row">A</div>
<h2>Banana</h2>
<div class="row">B</div>
<h2>Strawberry</h2>
<div class="row">C</div>
</div>
苹果
A.
香蕉
B
草莓的
C
我的XPath:前面的同级::h2
我要做的是:为每个div.row
选择最近的前一个h2
元素
例如,div.row A
给我Apple h2
,div.row B
给我香蕉h2
,div.row C
给我草莓h2
问题是我的XPath错误,它只为每个div.row选择了Apple h2
。
我如何解决这个问题?如果你想选择最接近的前一个同级-只需添加索引[1]
:
preceding-sibling::h2[1]
XPath轴包含上下文节点前面的所有同级节点。XPath,preference sibling::h2
,选择从上下文节点开始的所有h2
同级元素
因此,如果上下文节点是C
元素
/div/div[.="C"]/preceding-sibling::h2
挑选
<h2>Apple</h2>
<h2>Banana</h2>
<h2>Strawberry</h2>
选择公正
<h2>Strawberry</h2>
<h2>Apple</h2>
选择公正
<h2>Strawberry</h2>
<h2>Apple</h2>
苹果公司
当然,如果您以编程方式获得上下文节点(而不是通过XPath作为/div/div[.=“C”]
),并使用前面的同级节点::h2[1]
或前面的同级节点::h2[last()]
相对于宿主语言/框架(nokogiri)中的上下文节点,上述示例也适用。欢迎您。请选择最有帮助的答案。(可能还想重新访问并接受对的有用答案。)谢谢。