DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> XML學習教程 >> XML詳解 >> 用JTidy轉換html為xml
用JTidy轉換html為xml
編輯:XML詳解     
最近要從網頁中提取信息,想先把Html轉換成標准的XML格式,然後方便使用dom4j進行後續的分析,試用了不少現成的類庫,JTidy、NekoHTML、Html Parser、Jericho,最後還是使用了JTidy。

  只是r8 snapshot還只是一個nightly builds,前面的r7版更已經是4年前的事了,這個項目就這樣荒廢了?可能是參與的人太少又或者是覺得已經成熟?

  JTidy提供了一個語法檢查器和標簽補償器,能夠對各種亂七八糟的html進行修復,使之符合xHtml標准。

  r8 snapshot相對於r7改變了一些參數的設置方法,特別是在字符編碼處理上,用setInputEncoding和setOutputEncoding方法來確定輸入和輸出文件的字符編碼,可以使用任何有效的Java編碼名稱,這就比以前的強多了。

  總體上解析的結果還不錯,只是有些地方還需要對生成文件進行手工調整,或者自己再編一段代碼處理一下,已經不是大問題了。

  一些常用的參數設置:

setAltText(Java.lang.String altText)
加上默認的alt屬性值
setBreakBeforeBR(boolean breakBeforeBR)
在換行<br />之前加一空行
setCharEncoding(int charencoding)
已廢棄
setConfigurationFromFile(Java.lang.String filename)
從文件中讀取配置信息
setConfigurationFromProps(Java.util.PropertIEs props)
從propertIEs中讀取配置信息
setErrfile(Java.lang.String errfile)
錯誤輸出文件
setFixBackslash(boolean fixBackslash)
URL中用/取代\
setForceOutput(boolean forceOutput)
不管生成的XML是否有錯,強制輸出。
setHideComments(boolean hideComments)
結果中不生成注釋
setInputEncoding(Java.lang.String encoding)
輸入編碼
setLogicalEmphasis(boolean logicalEmphasis)
用em替代i,strong替代b
setMessageListener(TidyMessageListener listener)
加入一個TidyMessageListener監聽器
setOnlyErrors(boolean onlyErrors)
只輸出錯誤文件
setOutputEncoding(Java.lang.String encoding)
輸出編碼
setPrintBodyOnly(boolean bodyOnly)
只輸出body中的部分
setRepeatedAttributes(int repeatedAttributes)
重復屬性的處理
setSpaces(int spaces)
每行前的空格數,就是縮進格式
setTidyMark(boolean tidyMark)
是否生成tidy標記
setTrimEmptyElements(boolean trimEmpty)
不輸出空元素
setUpperCaseAttrs(boolean upperCaseAttrs)
屬性變大寫
setUpperCaseTags(boolean upperCaseTags)
標記變大寫
setWraplen(int wraplen)
多長換行
setXHTML(boolean xHtml)
輸出xHtml
setXmlOut(boolean XMLOut)
輸出XML
setXmlPi(boolean XMLPi)
文件頭輸出XML標記
setXmlSpace(boolean XMLSpace)
加入XML名字空間屬性

使用方法極為easy,定義輸入輸出流,用tidy.parse()轉換就行了:

BufferedInputStream in;

FileOutputStream out;

Tidy tidy = new Tidy();

tidy.setConfigurationFromFile(configFileName);//配置文件,寫入上面的設置參數

try {

in = new BufferedInputStream(new FileInputStream(srcFileName));

out = new FileOutputStream(outFileName);

tidy.parse(in, out);

} catch (IOException e) {

System.out.println(e);

}


 

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved