簡體   English   中英

如何使用Java從html中刪除特定標記?

[英]How to remove a specific tag from html using Java?

我有一個大的HTML。 我想刪除一個特定的span標簽,它可以很簡單。

<span class=GramE> blah blah blah</span>
Output: bla bla bla

要么

<span class=a><span class=GramE>bla bla bla</span></span>
Output: <span class=a>bla bla bla</span>

或者以任何其他混合格式。 但是,它應該保留...之間的文本

實際的HTML

<td width=265 colspan=3 valign=top style='width:7.0cm;background:white;
 padding:0cm 5.75pt 0cm 5.75pt'> <p class=MsoNormal style='margin-bottom:0cm;margin-bottom:.0001pt;text-align:justify;line-height:normal'><span class=GramE><span style='font-size:13.0pt'>(Here</span></span><span style='font-size:13.0pt'> Lorem ispsum. Lorem ispsum. Lorem ispsum. Lorem ispsum )</span></p>
            </td>

我嘗試了以下代碼,但replaceAll()似乎沒有用。 我的html文本中有許多混合的span-tags需要這個輸出。 請幫我弄清楚我哪里出錯了。

String filename = "file-location.html";
try (BufferedReader br = new BufferedReader(new FileReader(filename))) {

        String line;
        String sb = "";

        while ((line = br.readLine()) != null) {

            String tmp = line.replaceAll("<span class=GramE[^>]*>/g", "");
            System.out.print(tmp);
        }

    } catch (IOException e) {
        e.printStackTrace();
    } 

基於RegEx匹配開放標簽,除了XHTML自包含標簽 (感謝@Maurice Perry的評論)

我建議你使用jsoup ,如下所示: 用jsoup解析html並刪除標記塊

這個答案是在將實際的html添加到問題之前完成的。 當RegEx可能解決詞匯問題時,JSoup解決了語法問題。 因此,對於這個問題,使用JSoup是唯一的方法。

但是,這個答案可能有助於RegEx用戶:

line.replaceAll("<span class=GramE>([^<]*)</span>", "$1" );

([^<]*)是一個捕獲組, $1是它的值。

文檔

測試用例:

public class RemoveTagFromPage {

   public static void main( String[] args ) {
      final String text =
         "<html><body>" +
            "<p>hello</p>" +
            "<span class=a>" +
               "<span class=GramE>bla bla bla</span>" +
            "</span>" +
         "</body></html>";
      System.out.println(
         text.replaceAll("<span class=GramE>([^<]*)</span>", "$1" ));
   }
}

執行日志:

<html><body><p>hello</p><span class=a>bla bla bla</span></body></html>

暫無
暫無

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

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