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);