淺談HtmlCleaner+XPath解析html或者xml


解析html或者xml可以選用:

DocumentBuilder或者HtmlCleaner

DocumentBuilder與js中document沒有太大的區別,而且不適用,在此不過多介紹。

進入正題:

HtmlCleaner是一個開源的Java語言的Html文檔解析器。HtmlCleaner能夠重新整理HTML文檔的每個元素並生成結構良好(Well-Formed)的 HTML 文檔。默認它遵循的規則是類似於大部份web 瀏覽器為創 文檔對象模型所使用的規則。然而,用戶可以提供自定義tag和規則組來進行過濾和匹配。它被設計的小,快速,靈活而且獨立。HtmlCleaner也可用在Java代碼中,當命令行工具或Ant任務。 解析后編程輕量級文檔對象,能夠很容易的被轉換到DOM或者JDom標准文檔,或者通過各種方式(壓縮,打印)連續輸出XML。
代碼部分:
首先我們要創建一個HtmlCleaner
HtmlCleaner htmlCleaner = new HtmlCleaner();
然后我們就可以用他來獲取文件了。
TagNode tagNode= htmlCleaner.clean(content);
content可以是文件,也可以是hmtl字符串。
主要方法:
Object[] tbodyNodeArray = tagNode.evaluateXPath(XPath);
這里XPath為你要讀取的目錄,可以是/body/table[2]/tbody/tr/td[2]/table[4]/tbody/tr/td/table/tbody  
這樣,直接讀取到table。
也可以直接讀取你所需要的值,這里xpath的目錄怎么獲取呢?
首先你需要安裝一個火狐瀏覽器,然后在插件中找到火狐調試模式插件。然后再你想要讀取的html中按f12鍵,就會有顯示html中內容直接上截圖以便大家能夠更清晰的理解:
這里從body中選取你要讀取的內容如圖:
 
然后右鍵復制xpath,就可以讀取到你要內容了。
直接把目錄給到td或者table都可以。給大家貼一段我的代碼,相信大家就可以清晰的知道步驟了:
tagNode = htmlCleaner.clean(content);
            Object[] tbodyNodeArray = tagNode.evaluateXPath(XPath);
            
            for (Object tbodyNode : tbodyNodeArray) {//tbody
                TagNode tbody = (TagNode) tbodyNode;
                Object[] trNodeArray = tbody.getChildTags();
                
                for (Object trNode : trNodeArray) {//tr
                    TagNode tr = (TagNode) trNode;
                    Object[] tdNodeArray = tr.getChildTags();
                    
                    for (Object tdNode : tdNodeArray) {//td
                        TagNode td = (TagNode) tdNode;
                        //td.getText(); //輸出值                    }
                    
                }
            }

以上就是xpath解析步驟,相信可以給大家一個思路了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM