如何使用CSS选择器获得“元素Y之后的第一个元素X”?

时间:2015-07-08 17:37:55

标签: java html css-selectors jsoup

在Java应用程序中,假设我在一个巨大的HTML代码中有这个地方:

<h2>
   <b>
      This
   </b>
</h2>

<h1>
</h1>

想象一下,我想在元素h1之后得到第一个元素b。我已经通过JSoup库尝试了一些CSS选择器,但没有发现任何有用的东西。这里最大的问题是:他们不是兄弟姐妹。我不知道b元素是否是不同父母的孩子。

有办法吗?

1 个答案:

答案 0 :(得分:1)

您无法使用CSS选择器完全执行此操作,您必须使用JSoup在代码中执行某些逻辑。

此算法适用于浏览器以及JSoup文档。基本上,从b元素开始,您可以在这里找到h1

  1. current设为b
  2. 虽然current不是null
    1. sibling设置为current&#39; 下一个元素兄弟(在JSoup中,这将是nextElementSibling method;在任何模糊的现代浏览器中,它是nextElementSibling 属性
    2. 虽然sibling不是null
      1. 如果siblingh1,则表示您已完成
      2. 否则,将sibling设置为sibling的下一个元素兄弟并继续此兄弟循环(&#34;而sibling不是null& #34)
    3. siblingnull)将current设置为current的父节点。在JSoup中,那将是parent method。在浏览器中,它将是parentNode 属性
    4. 如果current不是null,请继续此父循环(&#34; current不是null&#34;)。
    5. 没有关注h1