Android - 使用JSOUP派生子节点的父节点

时间:2015-05-06 16:15:05

标签: android html html-parsing jsoup

我必须在我的Android应用程序上显示之前更改网页的html代码。这是我的情况:

<html>
    <div class="something">
         <a class="inner_something">
             <span class="title">Titolo1</span>
         </a>
    </div>

    <div class="something">
          <a class="inner_something">
             <span class="title">Titolo2</span>
         </a>
    </div>
</html>

我想删除包含text = Titolo2的div中包含的span。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

是的,您可以使用Jsoup:

String html = "<html>\n"
            + "    <div class=\"something\">\n"
            + "         <a class=\"inner_something\">\n"
            + "             <span class=\"title\">Titolo1</span>\n"
            + "         </a>\n"
            + "    </div>\n"
            + "\n"
            + "    <div class=\"something\">\n"
            + "          <a class=\"inner_something\">\n"
            + "             <span class=\"title\">Titolo2</span>\n"
            + "         </a>\n"
            + "    </div>\n"
            + "</html>";

Document doc = Jsoup.parseBodyFragment(html);
doc.select("div:has(a:has(span:contains(Titolo2)))").first().remove();

System.out.println(doc);

要将已处理的HTML文档加载到WebView,请执行:

 myWebView.loadData(doc.toString(), "text/html", "UTF-8");

您还可以tweak the selectordoc.select("div.something");)选择并删除您想要的内容。

在您的情况下,这有点棘手:您必须根据内容进行选择,因此请使用:contains(text)

要计算某个班级div的数量,请执行以下操作:

Elements divs = doc.select("div.someclass");
int count = divs.size();

将为您提供课程someclass的div计数。