XPath只能直接跟随兄弟姐妹

tom*_*ith 3 xpath

我有以下类型的HTML.内容按<div "id=foo"><div "id=foo1">元素分组,<div "style=padding…">中间.

我正在试图弄清楚如何制作一个XPath表达式,这将允许我触发"id=foo"返回兄弟<div>s与"style=padding…"

得到这个<div id="foo">是微不足道的.但是,我不能只following-sibling基于"style=padding…"它做一个因为它然后返回所有匹配的<div>s.

我需要一种方法来返回匹配的<div>s,直到我击中匹配的兄弟姐妹"id=foo1".我很确定有一种我想念的简单方法!

<div id="foo">stuff...</div>

<div style="padding:2px; ">stuff...</div>

<div id="foo1">stuff...</div>

<div id="foo">stuff...</div>

<div style="padding:2px; ">stuff...</div>
<div style="padding:2px; ">stuff...</div>
<div style="padding:2px; ">stuff...</div>

<div id="foo1">stuff...</div>
Run Code Online (Sandbox Code Playgroud)

Wel*_*bog 5

有什么理由你不能采取简单的方法来挑选所有div没有id属性的s?

div[not(@id)]
Run Code Online (Sandbox Code Playgroud)

或者,也许,divs具有样式属性?

div[@style]
Run Code Online (Sandbox Code Playgroud)

如果由于某种原因,这是不可接受的,你可以选择更像你的想法:

div[@style][following-sibling::div[@id='foo1']]
Run Code Online (Sandbox Code Playgroud)

这将获得div具有样式属性的所有s,这些属性在div匹配特定id之前出现.那是你要的吗?

我想你的实际输入HTML不如你提供的示例那么简单,但我列出的所有这些XPath表达式都适用于你的例子.如果您可以提供有关您的预期输出以及您遇到的问题的更具体的详细信息,那么我可以为您提供更多帮助.