XML解析--使用Sax


一、使用SAX解析XML介绍

SAX解析可以在读取文档的时候,就对文档进行处理,而不必等到整个文档装载完才对文档进行处理。

优点:解析可以立即开始,速度快,没有内存压力。
缺点:不能对节点做修改。

二、使用SAX解析XML的步骤

使用Sax解析XML的准备工作:

1.继承DefaultHandler类:这是解析XML的事件处理基类

2.覆盖statDocument/endDocument,startElement/endElement方法

(1)反射Sax解析工厂对象

	SAXParserFactory spf = SAXParserFactory.newInstance();

(2)创建Sax解析器对象

	SAXParser saxParse = spf.newSAXParser();

(3)解析XML文件

		File file = new File("src/com/demo.xml");
		saxParse.parse(file, new SaxXML());//第二个参数为类名

三、Sax解析XML实例

(1)给出需要解析的XML文件

<?xml version="1.0" encoding="UTF-8"?>
<employees>
	<employee id="0">
		<name>Alexia</name>
		<age>23</age>
		<sex>Female</sex>
		<weight>150</weight>
		<weight><a>160</a></weight>
	</employee>
	<employee id="1">
		<name height="178">Edward</name>
		<age>24</age>
		<sex>Male</sex>
	</employee>
	<employee id="2">
		<name>wjm</name>
		<age>23</age>
		<sex>Female</sex>
	</employee>
	<employee id="3">
		<name>wh</name>
		<age>24</age>
		<sex>Male</sex>
	</employee>
</employees>

(2)使用Sax对XML进行解析

说明:从上到下,依次打印XML中所有元素的属性名。

package com.test;

import java.io.File;

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

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

/**
 * 类说明:
 * 		使用SAX解析XML
 * 使用Sax解析XML的准备工作:
 * 		1.继承DefaultHandler类:这是解析XML的事件处理基类
 * 		2.覆盖statDocument/endDocument,startElement/endElement方法
 * 
 * Sax解析XML的步骤:
 * 		1.反射一个Sax解析工厂对象
 * 		2.创建Sax解析器对象
 * 		3.解析XML文件
 * 
 * @author qianliangguo
 */
public class SaxXML extends DefaultHandler{
	public static void main(String[] args) throws Exception{
		//1.反射一个Sax解析工厂对象
		SAXParserFactory spf = SAXParserFactory.newInstance();
		//2.创建Sax解析器对象
		SAXParser saxParse = spf.newSAXParser();
		//3.解析XML文件
		File file = new File("src/com/demo.xml");
		saxParse.parse(file, new SaxXML());
	}
	@Override
	public void startDocument() throws SAXException {
		System.out.println("开始解析文档:");	
	}

	@Override
	public void endDocument() throws SAXException {
		System.out.println("文档解析结束.");
	}

	@Override
	public void startElement(String uri, String localName, String qName,
			Attributes attributes) throws SAXException {
		System.out.println("开始解析元素"+qName+",");
	}

	@Override
	public void endElement(String uri, String localName, String qName)
			throws SAXException {
		System.out.println(qName+"元素解析结束.");
	}
}

解析效果:
在这里插入图片描述
在这里插入图片描述

发布了332 篇原创文章 · 获赞 871 · 访问量 13万+

猜你喜欢

转载自blog.csdn.net/weixin_43691058/article/details/103986301