【问题标题】:Parsing html with Jsoup and removing spans with certain style使用 Jsoup 解析 html 并删除特定样式的 span
【发布时间】:2012-05-27 11:59:49
【问题描述】:

我正在为朋友写一个应用程序,但我遇到了问题,网站上有这些

<span style="display:none">&amp;0000000000000217000000</span>

我们甚至不知道它们是什么,但我需要将它们移除,因为我的应用正在输出它们的值。

有什么方法可以检查它是否在元素中并将其删除?我有一个 for-each 循环解析,但是我不知道如何有效地删除这个元素。

谢谢

【问题讨论】:

    标签: java android html jsoup


    【解决方案1】:

    如果您想完全基于样式属性删除这些跨度,请尝试以下代码:

    String html = "<span style=\"display:none\">&amp;0000000000000217000000</span>";
    html += "<span style=\"display:none\">&amp;1111111111111111111111111</span>";
    html += "<p>Test paragraph should not be removed</p>";
    
    Document doc = Jsoup.parse(html);
    
    doc.select("span[style*=display:none]").remove();
    
    System.out.println(doc);
    

    这是输出:

    <html>
     <head></head>
     <body>
      <p>Test paragraph should not be removed</p>
     </body>
    </html>
    

    【讨论】:

      【解决方案2】:

      试试这个:

      //Assuming you have all the data in a Document called doc:
      String cleanData = doc.select("query").text();
      

      .text();方法将清除所有 html 标签并用人类可读的内容替换所有编码。哦,是的,然后是方法 ownText();这也可能有帮助。我不能说哪个最适合你的目的。

      【讨论】:

        【解决方案3】:

        可以使用JSOUP访问元素的innerHTML,去掉转义字符,替换innerHTML:

        Elements elements = doc.select('span');
        for(Element e : elements) {
            e.html( e.html().replaceAll("&amp;","") );
        }
        

        在上面的示例中,使用包含违规字符的所有元素的选择器获取所有元素的集合。然后,将&amp;amp; 替换为空字符串或您希望的任何字符。

        此外,您应该知道&amp;amp;&amp; 字符的转义码。如果不转义 &amp; 字符,您可能会遇到 HTML 验证问题。就您而言,如果没有其他信息,我假设您只是真的想消除它们。如果没有,这将帮助您入门。祝你好运!

        如果您需要删除尾随数字:

        // eliminate ampersand and all trailing numbers
        e.html( e.html().replaceAll("&amp;[0-9]*","") );
        

        有关正则表达式的更多信息,请参阅Javadocs on Regex Pattern

        【讨论】:

        • 我希望数字也全部消失,而不仅仅是 &
        • Samuel,如果整个 innerHTML 是 &amp; 和数字,那么只需使用 e.html(""); 并将其设置为等于空字符串。否则,使用正则表达式。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-14
        • 2012-11-06
        • 1970-01-01
        • 2020-06-01
        相关资源
        最近更新 更多