jsoup删除一个类

时间:2016-01-17 10:33:35

标签: android jsoup

使用jsoup选择我已设法提取以下html。我正在尝试获取<a id="dd_start"></a><a id="dd_end"></a>之间的所有HTML代码。

我使用obj.first().getElementsByClass("div.dd_outer").remove()没有运气。 有什么建议?

<div class="entry-content" itemprop="text"> 
<a id="dd_start"></a>
<p><a href="http://blablabla.com/2016/01/16/blablabla/icon-2/#main" rel="attachment wp-att-21"><img class="size-full wp-image-21501 aligncenter" src="http://blablabla.com/wp-content/uploads/16/01/google1.jpg" alt="google-icon" width="100%"></a></p> 
<p>blablabla.<br> <span id="more-21499"></span><br> blablabla.</p> 
<p>blablabla <a href="https://blablabla.com/blablabla" target="_blank">blablabla</a>. </p> 
<a id="dd_end"></a>
<div class="dd_outer">
 <div class="dd_inner">
   <div id="dd_ajax_float">
     <div class="dd_button_v">
     </div>
   </div> 
 </div>
</div>

1 个答案:

答案 0 :(得分:2)

这适用于您发布的代码段。您可能希望进行一些更改以处理边缘情况,错误等。

public static void main(String[] args) throws Exception {
    String html = new String(Files.readAllBytes(Paths.get("input.html")));
    Document doc = Jsoup.parse(html);

    Elements section = new Elements();
    Element sibling = doc.getElementById("dd_start").nextElementSibling();
    do {
        section.add(sibling);
        sibling = sibling.nextElementSibling();
    } while(!sibling.id().equals("dd_end"));

    System.out.println(section);
}

关于删除某个部分的问题,您可以这样做:

Document doc = Jsoup.parse(html);
doc.select("div.dd_outer").first().remove();
System.out.println(doc);

这将从Document对象中删除该部分。注意在first()之前调用的remove()。这个很重要。您想要调用remove()的{​​{1}} Elementfirst()返回parentNode。这将从Document中删除元素,从而影响first()对象。如果您不致电doc.select("div.dd_outer").remove(); 并将其更改为此

remove()

您将调用Elements select()remove()返回select()。这只是一个集合(各种列表包装)。因此,如果您致电Document,则会影响doc而非Vehicle* v = new Vehicle; 的结果。因此,如果您尝试打印{{1}}变量,您会看到删除的内容仍然存在。