import java.io.BufferedInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.URL;
import org.w3c.tidy.Tidy;
public class HTML2XML {
private String url;
private String outFileName;
private String errOutFileName;
public HTML2XML(String url, String outFileName, String errOutFileName){
this.url = url;//提供一個輸入的URL
this.outFileName = outFileName;//輸出文件
this.errOutFileName = errOutFileName;//錯誤文件
}
public static void main(String[] args){
//參數:HTML文件的UTL,輸出文件和錯誤文件名
System.out.println("程序開始運行……");
HTML2XML t = new HTML2XML("http://hswebuat01/maximo/help.html",
"c:\\temp\\html2xml.xml","c:\\temp\\err.txt");
t.convert();
System.out.println("程序運行結束……");
}
public void convert(){
URL u;
BufferedInputStream in;
FileOutputStream out;
Tidy tidy = new Tidy();
tidy.setXmlOut(true);//告訴Tidy將HTML轉換成XML
try{
tidy.setErrout(new PrintWriter(new FileWriter(errOutFileName),true));//將錯誤信息保存到文件中
u = new URL(url);
in = new BufferedInputStream(u.openStream());//創建一個輸入輸出流
out = new FileOutputStream(outFileName);
tidy.parse(in, out);//轉換文件
in.close();
out.close();
}catch(IOException e){
System.out.println(this.toString()+e.toString());
}
}
}
要点:
(1)BufferedInputStream()的应用
(2)java扩展标准库org.w3c.tidy.Tidy的使用
(3)URL的使用
注意:
该程序中用到的org.w3c.tidy包在http://sourceforge.net/projects/jtidy/下载。解压后引用build文件夹中的tidy包就ok了。
下面是解决转换过程中的乱码问题:
首先将源网页用UTF-8重新编码放到一个新的文件,
还要注意加上:
tidy.setInputEncoding("UTF-8");
才能正确显示
源代码如下:
import java.net.URL;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.io.*;
import org.w3c.tidy.Tidy;
public class xml {
private String url;
private String outFileName;
private String errOutFileName;
public xml(String url, String outFileName, String
errOutFileName) {
this.url = url;
this.outFileName = outFileName;
this.errOutFileName = errOutFileName;
}
public void convert() {
URL u;
BufferedInputStream in;
FileOutputStream out;
Logger log = Logger.getLogger("convert");
try {
u = new URL(url);
//Create input and output streams
in = new BufferedInputStream(u.openStream()); // 打开文件,转换为 UTF-8 编码
InputStreamReader isr = new InputStreamReader(in, "GB2312"); // 源文件编码为 gb2312
File tmpNewFile = File.createTempFile("GB2312",".html"); // 转换后的文件,设定编码为 utf-8
out = new FileOutputStream( tmpNewFile ); // 需要将文件转换为字符流
OutputStreamWriter osw = new OutputStreamWriter( out , "UTF-8"); // 指定目标编码为 utf-8
osw.write("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");
char[] buffer = new char[10240]; // 文件缓冲区
int len = 0; // 使用字符读取方式,循环读取源文件内容
while( (len = isr.read(buffer)) !=-1 ) // 转换后写入目标文件中
{
osw.write( buffer, 0, len);
}
osw.close(); // 转换完成
isr.close();
out.close();
in.close();
if( log.isLoggable( Level.INFO)){
log.info("HTML 文档转 UTF-8 编码完成!");
}
//设置tidy
Tidy tidy = new Tidy();
// Set file for error messages
tidy.setErrout(new PrintWriter(new FileWriter(errOutFileName), true));
// Tell Tidy to convert HTML to XML
tidy.setXmlOut(true);
tidy.setInputEncoding("UTF-8");
FileInputStream in0 = new FileInputStream( tmpNewFile );
FileOutputStream out0 = new FileOutputStream(outFileName);
//Convert files
tidy.parse(in0, out0);
//Clean up
in.close();
out.close();
tmpNewFile.delete(); // 删除临时文件
} catch (IOException e) {
System.out.println(this.toString() + e.toString());
}
}
public static void main(String[] args) {
/*
* Parameters are:
* URL of HTML file
* Filename of output file
* Filename of error file
*/
String u="http://www.baidu.com/";
String o="index.xml";
String e="error.xml";
xml t = new xml(u, o, e);
t.convert();
System.out.println("OK!");
}
}
相关推荐
本代码实现了将一个html文件转成xml文件
xml的转化,这是一个例子,将一个xml文件转化成一个html文件
这是我根据网上一些代码,自己改写的程序,完成html格式转换成为标准的xml格式,虽然转换后有一点小错误,但转换后文件能有浏览器打开并能用Dom解析
javaxml,xsl,html文件转换.pdf
我做了一个网站文件和XML文件互相转换的类,发布出来方便大家使用。 /** * @author shadu####foxmail.com * @version v0.2 * @updated 2009-05-20 * @desc Covert the files on the website to one XML,where ...
我采用xml文件记录表单中需要的数据,使用XSLT在服务器端或客户端将该xml文件转换成HTML中需要的FORM表单. 该XSLT是一个通用的模式,只需要简单的模仿例子中的xml文件格式,就可以生成所有形式的表单.
主要对xml语言的理解和学习,xml文档的应用比较广泛
将pdf转为html文件,这里只提供了相关资源文件,调用程序之后提供
javaxml,xsl,html文件转换[定义].pdf
plist 文件有两种格式,一种是编码后的二进制格式,另一种是大家平时所见的 XML 格式. iphone里的.plist文件一般采用binary格式(编码后的, 也就是平时大家所说"乱码" 的文件)保存.两种格式的 plist 在 iPhone 上都可以...
使用xslt讲xml文件转换成html和js的形式,根据js处理不同的xml文件
javaxml,xsl,html文件转换借鉴.pdf
后来发现VisualStudio里面居然可以把代码里面的XMl注释生成文件,在网上又看见个可以把XML文件转换成html文档查看的,就考虑自己写一个程序直接生成Word文档。 由于对Word编程也不熟,所以Word文档那个类也是在网上...
能够将doc,txt,xml,html格式文件转换成txt文件
对xml文件的转换如xhtml,HTML等
文档对象模型是HTML和XML文档的编程接口规范,它与平台和语言是无关的,因而可以用各种语言在各种平台上实现。该模型定义了THML和XML文件在...通过对XML文件的解析处理,XML文件中的元素便转化为DOM文档中的节点对象。
MDC-XSL-XML文件转换源代码,XML与HTML文件格式转换小程序,适应性的XSL算法,可以方便的移植至其他程序中。