你必须定义对应的 xslt 样式表,这个程序负责使用 xslt 进行转换。
haoguanjun@gmail.com
用这个信箱联系我。
这个样式表用来解析新闻内容页面,不是用来处理新闻主页的。
注意编码问题,上面的 xml 文件编码为 utf-8,你保存下来的时候,最好使用 记事本,选择另存为,在对话框中选择一下编码为 utf-8。
没有 main 函数问题:
上面的代码给出的是一个基于样式表的转换类,不能单独使用,main 函数需要自己写,main 函数中基本上如下所示:
HTMLParserByW3CDOM hpb = new HTMLParserByW3CDOM ();
hpb.setXSLT( 样式表的文件名 );
hpb.parser( HTML文件名,转换结果的XML文件名 );
注意:HTML文件是普通的 gb2312 编码的网页,不需要预先处理成utf-8
jtidy 中文问题:我们普通的网页编码使用 gb2312, 使用 jtidy 时,会出现乱码问题,解决的办法就是首先将网页重新编码为 utf-8 , 然后再进行处理,就不会出现乱码问题,见下面的代码
FileInputStream in = new FileInputStream( fileName ); // 打开文件,转换为 UTF-8 编码
InputStreamReader isr = new InputStreamReader(in, "GB2312"); // 源文件编码为 gb2312
File tmpNewFile = File.createTempFile("GB2312",".html"); // 转换后的文件,设定编码为 utf-8
FileOutputStream out = new FileOutputStream( tmpNewFile ); // 需要将文件转换为字符流
OutputStreamWriter osw = new OutputStreamWriter( out , "UTF-8");// 指定目标编码为 utf-8
re: 使用 JTidy 协助抽取网页内容 haogj 2006-09-24 17:34
这个转换对象使用下面的方法进行转换,结果存放在 outFileName 文件中
/**
* 使用样式表转换文档对象,得到最终的结果
* @param doc 文档对象
* @param outFileName 保存转换结果的文件名
*/
private void Transformer(Document doc , String outFileName )