您只需要指定它是前面的第一个兄弟h2:
preceding-sibling::h2[1]
更新了xpath(我还简化了
Sales
):
//p[a and preceding-sibling::h2[1][.='Sales'] and following-sibling::hr]
另外,如果您需要确定以下第一个兄弟姐妹
p
是
hr
,你可以试试这个……
//p[a and preceding-sibling::h2[1][.='Sales'] and following-sibling::*[not(self::p)][1][self::hr]]
如果你想同时选择
li
除了
磷
你
能够
更新要使用的xpath
preceding::
和
following::
,但您必须考虑可能显示为
磷
喜欢
a
,
span
等等……
//*[self::p or self::li][a and preceding::h2[1][.='Sales'] and following::*[not(self::p) and not(self::li) and not(self::a)][1][self::hr]]
这将从示例xml中选择以下内容…
<li>List item 2 with an <a href="http://" >an anchor</a> element.</li>
<li>List item 3 with an <a href="http://" >an anchor</a> element.</li>
<p>sales 0 with an <a href="http://">anchor</a> element.</p>
<p>sales 1 with an <a href="http://">anchor</a> element.</p>
但是,我建议使用第二个xpath
锂
明确地。。。
//li[a and preceding::h2[1][.='Sales'] and ../following-sibling::*[1][self::hr]]