你必須定義對應(yīng)的 xslt 樣式表,這個(gè)程序負(fù)責(zé)使用 xslt 進(jìn)行轉(zhuǎn)換。
haoguanjun@gmail.com
用這個(gè)信箱聯(lián)系我。
這個(gè)樣式表用來解析新聞內(nèi)容頁面,不是用來處理新聞主頁的。
注意編碼問題,上面的 xml 文件編碼為 utf-8,你保存下來的時(shí)候,最好使用 記事本,選擇另存為,在對話框中選擇一下編碼為 utf-8。
沒有 main 函數(shù)問題:
上面的代碼給出的是一個(gè)基于樣式表的轉(zhuǎn)換類,不能單獨(dú)使用,main 函數(shù)需要自己寫,main 函數(shù)中基本上如下所示:
HTMLParserByW3CDOM hpb = new HTMLParserByW3CDOM ();
hpb.setXSLT( 樣式表的文件名 );
hpb.parser( HTML文件名,轉(zhuǎn)換結(jié)果的XML文件名 );
注意:HTML文件是普通的 gb2312 編碼的網(wǎng)頁,不需要預(yù)先處理成utf-8
jtidy 中文問題:我們普通的網(wǎng)頁編碼使用 gb2312, 使用 jtidy 時(shí),會(huì)出現(xiàn)亂碼問題,解決的辦法就是首先將網(wǎng)頁重新編碼為 utf-8 , 然后再進(jìn)行處理,就不會(huì)出現(xiàn)亂碼問題,見下面的代碼
FileInputStream in = new FileInputStream( fileName ); // 打開文件,轉(zhuǎn)換為 UTF-8 編碼
InputStreamReader isr = new InputStreamReader(in, "GB2312"); // 源文件編碼為 gb2312
File tmpNewFile = File.createTempFile("GB2312",".html"); // 轉(zhuǎn)換后的文件,設(shè)定編碼為 utf-8
FileOutputStream out = new FileOutputStream( tmpNewFile ); // 需要將文件轉(zhuǎn)換為字符流
OutputStreamWriter osw = new OutputStreamWriter( out , "UTF-8");// 指定目標(biāo)編碼為 utf-8
這個(gè)轉(zhuǎn)換對象使用下面的方法進(jìn)行轉(zhuǎn)換,結(jié)果存放在 outFileName 文件中
/**
* 使用樣式表轉(zhuǎn)換文檔對象,得到最終的結(jié)果
* @param doc 文檔對象
* @param outFileName 保存轉(zhuǎn)換結(jié)果的文件名
*/
private void Transformer(Document doc , String outFileName )