java解析器
1. 使用java怎麼讀取html文件內容
java可以使用jsoup、htmlparser等工具進行html的讀取和解析,以下是詳細說明:
1、jsoup 是一款 Java 的HTML 解析器,可直接解析某個URL地址、HTML文本內容。它提供了一套非常省力的API,可通過DOM,CSS以及類似於JQuery的操作方法來取出和操作數據。據說它是基於MIT協議發布的。
jsoup的主要功能如下:
從一個URL,文件或字元串中解析HTML;
使用DOM或CSS選擇器來查找、取出數據;
可操作HTML元素、屬性、文本;
示例代碼:
Document doc = Jsoup.parse(input, "UTF-8", "http://www.dangdang.com");
Element content = doc.getElementById("content");
Elements links = content.getElementsByTag("a");
for (Element link : links) {
String linkHref = link.attr("href");
String linkText = link.text();
}
2. 目前在Java中幾種常用的XML解析器的比較
目前常用的XML的解析器主要有:SAX,DOM,Xerces
1、SAX處理的優點非常類似於流媒體的優點。分析能夠立即開始,而不是等待所有的數據被處理。而且,由於應用程序只是在讀取數據時檢查數據,因此不需要將數據存儲在內存中。這對於大型文檔來說是個巨大的優點。事實上,應用程序甚至不必解析整個文檔;它可以在某個條件得到滿足時停止解析。一般來說,SAX還比它的替代者DOM快許多。另一方面,由於應用程序沒有以任何方式存儲數據,使用SAX來更改數據或在數據流中往後移是不可能的。
2、DOM以及廣義的基於樹的處理具有幾個優點。首先,由於樹在內存中是持久的,因此可以修改它以便應用程序能對數據和結構作出更改。它還可以在任何時候在樹中上下導航,而不是像SAX那樣是一次性的處理。DOM使用起來也要簡單得多。另一方面,在內存中構造這樣的樹涉及大量的開銷。大型文件完全佔用系統內存容量的情況並不鮮見。此外,創建一棵DOM樹可能是一個緩慢的過程。
3、選擇DOM還是選擇SAX,這取決於下面幾個因素:
應用程序的目的:如果打算對數據作出更改並將它輸出為XML,那麼在大多數情況下,DOM是適當的選擇。並不是說使用SAX就不能更改數據,但是該過程要復雜得多,因為您必須對數據的一份拷貝而不是對數據本身作出更改。
數據容量:對於大型文件,SAX是更好的選擇。數據將如何使用:如果只有數據中的少量部分會被使用,那麼使用SAX來將該部分數據提取到應用程序中可能更好。另一方面,如果您知道自己以後會回頭引用已處理過的大量信息,那麼SAX也許不是恰當的選擇。
對速度的需要:SAX實現通常要比DOM實現更快。
SAX和DOM不是相互排斥的,記住這點很重要。您可以使用DOM來創建SAX事件流,也可以使用SAX來創建DOM樹。事實上,用於創建DOM樹的大多數解析器實際上都使用SAX來完成這個任務!
4、SAX,DOM是兩種對XML文檔進行分析的方法(沒有具體的實現,只有介面),所以不是解釋器,如果光有他們,你是完成不了對xml文檔的處理的。SAX的包是org.xml.sax,DOM的包是org.w3c.dom,包的名稱很重要,它有助於你理解他們之間的關系。
5、jaxp是api,他封裝了sax/dom兩種介面。並在sax/dom的基礎之上,作了一套比較簡單的api以供開發人員使用。jaxp的包是javax.xml.parsers,可以看看jaxp的源文件,它的文件中包含了對sax或者dom的引用(import)jaxp也不是具體的實現,他只是一套api。如果你僅僅有jaxp那是無法工作的,(其實jaxp只是完成對sax、dom的包裝,生成了DocumentBuilderFactory/DocumentBuilder和SAXParserFactorySAXParser。也就是設計模式中的工廠模式,他的好處就是具體的對象(解釋器)建立由子類完成)
6、xerces解釋器(號稱地球上最快的xml解釋器)在xerces中對jaxp中定義的進行了繼承(extends)對應ryImpl這就是為什麼你的classpath中只要有xerces.jar(其中包含了saxdomjaxp)和xercesImpl.jar就可以的原因了.
3. 姣旇緝嫻佽 java xml瑙f瀽鍣ㄦ湁鍑犵 鍚嶅瓙鏄浠涔堬紵
DOM:澶勭悊澶у瀷鏂囦歡鏃跺叾鎬ц兘涓嬮檷鐨勯潪甯稿帀瀹熾傝繖涓闂棰樻槸鐢盌OM鐨勬爲緇撴瀯鎵閫犳垚鐨勶紝榪欑嶇粨鏋勫崰鐢ㄧ殑鍐呭瓨杈冨氾紝鑰屼笖DOM蹇呴』鍦ㄨВ鏋愭枃浠朵箣鍓嶆妸鏁翠釜鏂囨。瑁呭叆鍐呭瓨,閫傚悎瀵筙ML鐨勯殢鏈鴻塊棶
SAX:涓嶇幇浜嶥OM,SAX鏄浜嬩歡椹卞姩鍨嬬殑XML瑙f瀽鏂瑰紡銆傚畠欏哄簭璇誨彇XML鏂囦歡錛屼笉闇瑕佷竴嬈″叏閮ㄨ呰澆鏁翠釜鏂囦歡銆傚綋閬囧埌鍍忔枃浠跺紑澶達紝鏂囨。緇撴潫錛屾垨鑰呮爣絳懼紑澶翠笌鏍囩劇粨鏉熸椂錛屽畠浼氳Е鍙戜竴涓浜嬩歡錛岀敤鎴烽氳繃鍦ㄥ叾鍥炶皟浜嬩歡涓鍐欏叆澶勭悊浠g爜鏉ュ勭悊XML鏂囦歡錛岄傚悎瀵筙ML鐨勯『搴忚塊棶
STAX:Streaming
API
for
XML
(StAX)