2010-08-31 162 views
18

朋友的 我必須從url解析描述,其中解析的內容有很少的html標記,所以我怎樣才能將它轉換爲純文本。如何將HTML文本轉換爲純文本?

+0

你有什麼精確的要求?你需要去掉HTML標籤嗎?提取特定標籤的內容? – 2010-08-31 10:05:18

+0

我可以能夠提取的內容,但內容有

ZCC dsdfsf ddfdfsf

sfdfdfdfdf, 像上面我得到我的數據,但我需要一個簡單的純text.without那些HTML標籤 – MGSenthil 2010-08-31 10:54:37

+0

有類似的問題在這裏很好的答案:http://stackoverflow.com/questions/1518675/open-source-java-library-for-html-to-text-conversion/1519726#1519726。我用傑里科,它工作正常。 – 2013-09-03 09:49:43

回答

1

我建議通過解析jTidy原始HTML應該給你輸出,你可以寫XPath表達式反對。這是我發現的刮取HTML的最強大的方法。

16

剛剛擺脫HTML標籤的方法很簡單:

// replace all occurrences of one or more HTML tags with optional 
// whitespace inbetween with a single space character 
String strippedText = htmlText.replaceAll("(?s)<[^>]*>(\\s*<[^>]*>)*", " "); 

但不幸的是要求從未如此簡單:

通常,<p><div>元素需要一個單獨的處理,有可能與CDATA塊>字符(例如javascript)弄亂了正則表達式等。

+1

很好,你澄清了所有的複雜性! – ankitjaininfo 2010-08-31 13:18:32

+0

對於一些爲什麼這將不適用於一般情況下的背景,並且不會是f(u | oo)l-proof:[RegEx匹配除XHTML自包含標記以外的開放標記](http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags) – 2017-04-12 13:00:29

6

您可以使用這一行刪除html標籤並將其顯示爲純文本。

htmlString=htmlString.replaceAll("\\<.*?\\>", ""); 
0

如果要解析象瀏覽器顯示,使用方法:

import net.htmlparser.jericho.*; 
import java.util.*; 
import java.io.*; 
import java.net.*; 

public class RenderToText { 
    public static void main(String[] args) throws Exception { 
     String sourceUrlString="data/test.html"; 
     if (args.length==0) 
      System.err.println("Using default argument of \""+sourceUrlString+'"'); 
     else 
      sourceUrlString=args[0]; 
     if (sourceUrlString.indexOf(':')==-1) sourceUrlString="file:"+sourceUrlString; 
     Source source=new Source(new URL(sourceUrlString)); 
     String renderedText=source.getRenderer().toString(); 
     System.out.println("\nSimple rendering of the HTML document:\n"); 
     System.out.println(renderedText); 
    } 
} 

我希望這將有助於分析也表在瀏覽器格式。

感謝, Ganesh神

+0

downvoters請解釋他們爲什麼downvote? – koppor 2016-12-11 21:40:30