欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

SAX解析xml文件

程序员文章站 2022-05-27 23:44:35
...
 SAX方式解析xml步骤
1.通过SAXPa rserFactory的静态newInstance()方法获取
SAXPa rserFactory实例factory
2.通过SAXPa rserFactory实例的newSAXPa rser()方法返回
SAXParser实例pa rser
3.通过parser的parse方法解析XML(参数中需要DefaultHandler实例)
4.创建一个类继承DefaultHandler,重写其中的一些方法进
行业务处理并创建这个类的实例handler
一至三步如下
package sax;

import java.io.IOException;

import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.SAXException;

public class saxtest {

	public static void main(String[] args) {
		//获取一个SAXParserFactory实例
		SAXParserFactory spf = SAXParserFactory.newInstance();
		
		try {
			//通过SAXParserFactory实例获取SAXParser实例
			SAXParser  sp = spf.newSAXParser();
			//创建SAXParserHandler实例
			SaxDefaultHandler sdh = new SaxDefaultHandler();
			sp.parse("books.xml", sdh);
		} catch (IOException e) {
			e.printStackTrace();
		} catch (ParserConfigurationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SAXException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

}

最后一步如下
package sax;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

public class SaxDefaultHandler extends DefaultHandler {
	int bookNum=0;
	
	/*
	 * 用来遍历开始标签,及解析XML元素属性,及获取节点名
	 */
	@Override
	public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
		// TODO Auto-generated method stub
		super.startElement(uri, localName, qName, attributes);
		//知道属性名称及个数
//		if(qName.equals("book")){
//			String value = attributes.getValue("id");
//			System.out.println("该书ID为"+value);
//		}
		//不知道属性名称及个数
		if(qName.equals("book")){
				bookNum++;
				System.out.println("=========开始解析第"+bookNum+"本书===========");
			int num=attributes.getLength();
			for(int i=0 ;i

相关标签: java xml SAX