【问题标题】:Android - Derive the parent node of a child node using JSOUPAndroid - 使用 JSOUP 派生子节点的父节点
【发布时间】:2015-07-16 21:51:40
【问题描述】:

我必须先更改网页的 html 代码,然后才能在我的 Android 应用程序上显示它。这是我的情况:

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

我想删除其中包含 spandiv,其中包含 text=Titolo2。我该怎么办?

【问题讨论】:

    标签: android html html-parsing jsoup


    【解决方案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 selector (doc.select("div.something");) 准确地选择和删除您想要的内容。

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


    要计算某个类的divs 的数量,请执行以下操作:

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

    将为您提供 someclass 类的 div 计数。

    【讨论】:

    • 好吧,它正在运行,但情况要复杂得多.... 是否可以改为计算属于同一类的 div 的数量?
    猜你喜欢
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-16
    • 2014-06-13
    • 1970-01-01
    相关资源
    最近更新 更多