JAXP学习总结

1.JAXP简介

和DOM一样,都是一种XML解析技术。JAXP开发包是JavaSE的一部分

在javax.xml.parsers包中,定义了几个工厂类,通过调用这些工厂类,可以得到对XML文档进行解析的DOM或SAX的解析器对象

2.SAX解析的特点

不同于DOM解析,SAX无需加载整个XML文档,即在读取文档的时候便对文档进行处理

SAX采用事件处理的方式解析XML文件,利用SAX解析XML文档,涉及 解析器 和 事件处理器 两个部分。

    解析器:可以使用JAXP的API创建,创建出SAX解析器后,便可以指定解析器去解析某个XML文档。

    事件处理器:由程序员编写

3.DEMO

有如下XML文件car.xml

<?xml version="1.0" encoding="UTF-8"?>

<车辆清单>

	<汽车>

		<车牌 出产时间="2011年">奥迪</车牌>

		<产地>北京</产地>

		<单价>30</单价>

	</汽车>

</车辆清单>

使用SAX解析该文件

package web.java.xml.sax;



import java.io.File;



import javax.xml.parsers.SAXParser;

import javax.xml.parsers.SAXParserFactory;



import org.xml.sax.Attributes;

import org.xml.sax.helpers.DefaultHandler;



/**

 * 基于SAX解析XML文件

 * @author well

 *

 */

public class Demo1 {

	public static void main(String[] args) throws Exception {

		//创建SAX解析器工厂

		SAXParserFactory factory = SAXParserFactory.newInstance();

		//创建SAX解析器

		SAXParser saxParser = factory.newSAXParser();

		File file = new File("src/web/java/xml/sax/car.xml");

		//加载XML文件

		saxParser.parse(file, new MyHanler());

	}

}



//自定义SAX处理器

class MyHanler extends DefaultHandler{

	public void startElement(

			String uri, 

			String localName, 

			String qName, 

			Attributes attributes){

		System.out.println("<"+qName+">");

		System.out.println("有"+attributes.getLength()+"个属性");

		System.out.println(attributes.getValue("出产时间"));

	} 

	public void endElement(

			String uri, 

			String localName, 

			String qName){

		System.out.println("</"+qName+">");

	} 

	public void characters(

			char[] ch, 

			int start, 

			int length){

		String content = new String(ch,start,length);

		if(content.trim().length()>0){

			System.out.println(content);

		}

	} 

}



 

 

你可能感兴趣的:(jaxp)