Jsoup:获取某个元素之前的所有元素/删除某个元素之后的所有元素

问题描述:

假设我有这样的html:

Suppose I have html like this:

<div class="pets">
  <div class="pet">...</div>
  <div class="pet">...</div>
  <div class="pet">...</div>
  <div class="pet">...</div>
  <div class="friends-pets">Your friends have these pets:</div>
  <div class="pet">...</div>
  <div class="pet">...</div>
  <div class="pet">...</div>
  <div class="pet">...</div>
  <div class="pet">...</div>
  <div class="pet">...</div>
</div>

我只希望获得< div class ="friends-pets"> 之前的< div class ="pet"> .有没有办法用Jsoup做到这一点?我知道我可以得到所有这样的宠物:

I want to only get <div class="pet"> that come before <div class="friends-pets">. Is there a way to do it with Jsoup? I know I can get all pets like this:

Element petsWrapper = document.selectFirst(".pets");
Elements pets = petsWrapper.select(".pet");

但是这也将包括额外的宠物.我想知道我是只能选择上面的宠物还是只删除下面的宠物,然后使用该代码?

but that would include the extra pets too. I was wondering if I could only select the above pets or just remove the below pets and then use that code?

注释说明:

Element petsWrapper = document.selectFirst(".pets");
Elements pets = petsWrapper.select(".pet");
// select middle element
Element middleElement = petsWrapper.selectFirst(".friends-pets");
// remove from "pets" every element that comes after the middle element
pets.removeAll(middleElement.nextElementSiblings());
System.out.println(pets);