XML学习笔记(一):HTML文件转成XML文件

        XML全称Extensible Markup Language,可翻译为可扩展标记语言,是一种置标语言。常用XML文档描述数据,使得数据能被多个程序共享,还常用XML文档存放程序的配置参数,也用于定义Web网页上的文档元素(如RSS)以及商业文档。       

        在现实应用中,由于浏览器的易错性,大量的HTML网页格式很不规范。将HTML网页文件转换成XML文件后,将大大方便网络信息的抓取和维护。下面这个实例的功能是将HTML网页文件转成XML文件。  这个转换要用到tidy的jar包,官方下载地址 http://sourceforge.net/projects/jtidy    下载下来,然后把里面的jar引入到项目中去就可以了。

         技术要点

         将HTML网页文件转成XML文件的技术要点:

          运用Java扩展标准库org.w3c.tidy.Tidy中的方法实现加上URL网页地址的获取和转化;

          运用输入和输出流缓冲区BufferedInputStream和FileOutputStream将HTML文件中的数据读取转化成XML文档。

源代码

package corejava;

import java.awt.font.TextHitInfo;
import java.io.BufferedInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.net.URL;

import org.w3c.tidy.Tidy;

/**
 * 操作讲HTML文件转化成XML文件
 * */
public class TestHTMLtoXML {
	private String url;//HTML网页地址
	private String outFileName;//xml文件所在路径
	private String errOutFileName;//错误信息文件所在的路径
	
	public TestHTMLtoXML(String url,String outFileName,String errOutFileName){
		this.url=url;
		this.outFileName=outFileName;
	    this.errOutFileName=errOutFileName;	
		
	}
	public void convert(){
		URL u;
		BufferedInputStream in;
		FileOutputStream out;
		Tidy tidy=new Tidy();
		tidy.setXmlOut(true);//通知Tidy将HTML转化成XML
		try{
			System.out.println("begin");
			tidy.setErrout(new PrintWriter(new FileWriter(errOutFileName),true));//讲错误信息保存到文件errOutFileName中
			u=new URL(url);//根据网址创建URL对象
			in=new BufferedInputStream(u.openStream());//创建缓存输入流
			out=new FileOutputStream(outFileName);//创建文件输出流
			tidy.parse(in, out);//转换文件
			in.close();
			out.close();
		}catch(Exception e){
			e.printStackTrace();
		}
	}
public static void main(String[] args) {
	String htmlFile="http://www.baidu.com";
	String xml="C:/Users/Administrator/Desktop/p.xml";
	String errorFile="C:/Users/Administrator/Desktop/error.txt";
	TestHTMLtoXML htmltoXML=new TestHTMLtoXML(htmlFile, xml, errorFile);
	htmltoXML.convert();
	System.out.println("HTML文件装换成XML文件结束");
	
}
}
解读:
           实例中设置输出的文件是XML格式,告知Tidy将HTML转换为XML。JTidy提供HTML语法检查和HTML的pretty printing,它还允许将一个HTML文件作为输入,然后将其转换为XML。JTidy读取输入文件,如果发现有任何不匹配或遗漏的闭合标记,将纠正这些标记,最输出一个格式良好的XML文档。

           JTidy对文件转换的方法进行了良好的包装,只需在代码中加入获取输入/输出流的方法parse()方法便可将HTML文件转换为XML文件。如果转换失败,JTidy会将产生的错误信息写入错误文件中。 

你可能感兴趣的:(html,xml,tidy)