簡體   English   中英

用Jsoup解析html並刪除某些樣式的跨度

[英]Parsing html with Jsoup and removing spans with certain style

我正在為朋友寫一個應用程序,但我遇到了一個問題,網站有這些

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

我們甚至不知道它們是什么,但我需要刪除它們,因為我的應用程序正在輸出它們的值。

有什么方法可以檢查這是否在元素中並刪除它? 我有一個for-each循環解析但是我無法弄清楚如何有效地刪除這個元素。

謝謝

如果要完全根據樣式屬性刪除這些跨度,請嘗試以下代碼:

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>

試試這個:

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

文本(); 方法將清除所有html標記並用人類可讀的內容替換所有編碼。 哦是的,然后是方法ownText(); 這可能也有幫助。 我不能說哪種最適合你的目的。

您可以使用JSOUP訪問元素的innerHTML,刪除轉義的字符,並替換innerHTML:

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

在上面的示例中,使用選擇器獲取包含違規字符的所有元素的所有元素的集合。 然后,更換&amp; 用空字符串或你想要的任何字符。

另外,你應該知道&amp; &字符的轉義碼。 如果沒有轉義&字符,您可能會遇到HTML驗證問題。 在你的情況下,沒有額外的信息,我假設你真的想要消除它們。 如果沒有,這將有助於您入門。 祝好運!

如果您需要刪除尾隨數字:

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

有關正則表達式的更多信息,請參閱Regex Pattern上Javadocs

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM