`
mzh_2008beijing
  • 浏览: 233524 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SAX解析XML实例

 
阅读更多
  SAX解析xml简单示例:
  解析students.xml,打印解析结果。
1、students.xml:
<?xml version="1.0" encoding="UTF-8"?>
<students>
	<student id="1" enable="true">
		<name>刘亦菲</name>
		<sex>女</sex>
		<age>26</age>
		<email>lyf@163.com</email>
	</student>
	<student id="2" enable="false">
		<name>张伟</name>
		<sex>男</sex>
		<age>26</age>
		<email>zhanglangdang@126.com</email>
	</student>
	<student id="3" enable="true">
		<name>朱小明</name>
		<sex>女</sex>
		<age>26</age>
		<email>zxm@sohu.com.cn</email>
	</student>
</students>

2、SAXParserProcessor: XML解析器,用于解析XML
 package com.mzh.parsexml;

import java.util.List;
import java.util.ArrayList;

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

public class ParseXmlProcessor extends DefaultHandler{
	
	private Student stu;//目标实例
	private List<Student> stuList;//目标实例集合
	private String currTag;//当前解析的标签名
	/*开始解析xml*/
	public void startDocument() throws SAXException{
		stuList = new ArrayList();
		System.out.println("XML文档解析开始...");
	}
	/*结束解析XML*/
	public void endDocument() throws SAXException{
		System.out.println("XML文档解析完毕。");
	}
	public void startElement(String uri,String localName,String qName,Attributes attributes) 
			throws SAXException{
		currTag=qName;
		//如果开始解析<student>标签,则新建一个student实例:
		if("student".equals(qName)){
			stu = new Student();
		}
	}
	public void endElement(String uri,String localName,String qName) throws SAXException{
		//如果<student>标签解析完毕,则把解析出的student实例添加到student集合中:
		if("student".equals(qName)){
			stuList.add(stu);
			stu=null;
		}
		currTag=null;//每解析完一个标签,必须清空currTag
	}
	/*解析标签值*/
	public void characters(char[] chr,int start,int length) throws SAXException{
		String value=new String(chr,start,length);
		if(currTag!=null){
			if("name".equals(currTag)){
				stu.setName(value);
			}else if("age".equals(currTag)){
				stu.setAge(Integer.parseInt(value));
			}else if("sex".equals(currTag)){
				stu.setSex(value);
			}else if("email".equals(currTag)){
				stu.setEmail(value);
			}
		}
	}
	/*返回解析结果集合*/
	public List<Student> getStudents(){
		return stuList;
	}
}

3、Student:目标实体
package com.mzh.parsexml;

import java.io.Serializable;

public class Student implements Serializable{
	private static final long serialVersionUID = -9151482311773013799L;
	private String name;
	private String sex;
	private int age;
	private String email;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
}


4、TestParseXml:测试XML解析器
package com.mzh.parsexml;

import java.io.File;
import java.io.IOException;
import java.util.List;

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

import org.xml.sax.SAXException;

public class TestParseXml {
	/*测试parseXml*/
	public static void main(String[] args) {
		String fileName="d:\\students.xml";
		//sax解析器工厂:
		SAXParserFactory parserFactory = SAXParserFactory.newInstance();
		ParseXmlProcessor parseXmlProcessor = new ParseXmlProcessor();
		try {
			//从sax解析器工厂中获取一个sax解析器:
			SAXParser parser=parserFactory.newSAXParser();
			//执行XML解析:
			parser.parse(new File(fileName),parseXmlProcessor);
			//输出XML解析结果:
			List<Student> students = parseXmlProcessor.getStudents();
			System.out.println("解析结果:"+students.size()+"个学生:");
			for(Student stud:students){
				System.out.println("name:"+stud.getName()+" " +
								   "age:"+stud.getAge()+" " +
								   "sex:"+stud.getSex()+" " +
								   "email:"+stud.getEmail());
			}
		} catch (ParserConfigurationException e) {
			e.printStackTrace();
		} catch (SAXException e) {
			e.printStackTrace();
		}catch (IOException e) {
			e.printStackTrace();
		}
		
	}

}
分享到:
评论

相关推荐

    SAX解析XML文件实例

    SAX解析XML文件的实例。一个项目同时用dom解析和sax解析xml文件貌似会报错,项目框架建一直是用sax和dom4j解析xml文件的。当我用dom解析xml文件。导入包后就报错识别不了xml文件的编码格式。于是做了一个sax解析xml...

    sax解析xml实例

    ### SAX 解析 XML 实例详解 #### 一、SAX 解析器简介 SAX (Simple API for XML) 是一种基于事件驱动模型的 XML 解析技术。与 DOM (Document Object Model) 解析不同,SAX 不会将整个 XML 文档加载到内存中,而是...

    读取RSS-SAX解析XML实例(java版)

    标题"读取RSS-SAX解析XML实例(java版)"所涉及的知识点主要集中在两个方面:一是如何读取RSS(Really Simple Syndication)数据,二是使用SAX解析XML文件。 RSS是一种用于发布新闻、博客和其他定期更新内容的格式...

    Servlet利用SAX解析XML文档

    本主题将深入探讨如何在Servlet中利用SAX解析XML文档。 首先,我们需要了解SAX解析的基本原理。SAX解析器不创建整个XML文档树,而是当遇到XML文档的各个部分(如元素、属性、文本等)时,触发相应的事件回调函数。...

    android 使用Sax解析XML 源码实例

    下面是一个SAX解析XML的示例(有点长,因为详细注解了SAX事件处理的所有方法),SAX API中主要有四种处理事件的接口,它们分别是ContentHandler,DTDHandler, EntityResolver 和 ErrorHandler 。下面的例子可能...

    Sax解析xml文件

    以下是一个使用SAX解析XML文件的基本步骤: 1. **创建解析器**: 首先,我们需要创建一个SAX解析器实例。在Java中,这通常通过`SAXParserFactory`类完成。设置解析器属性,然后调用`newSAXParser()`方法获取`...

    sax解析xml尤其是获取元素的值或者内容

    在使用SAX解析XML前,需要创建一个解析器实例。Java中,可以使用`SAXParserFactory`来生成`SAXParser`,然后调用`parse()`方法解析XML文件。例如: ```java SAXParserFactory factory = SAXParserFactory.new...

    sax解析xml文件

    总结来说,"saxloadxml"项目提供了使用SAX解析XML文件的一个实例,可以帮助开发者了解如何利用SAX解析器处理XML文档,尤其是在性能和内存使用方面有较高要求的情况下。通过学习和实践这个项目,你可以提升处理XML...

    Android SAX、DOM、Pull解析xml文件案例讲解

    以下是使用SAX解析XML的基本步骤: - 创建`DefaultHandler`子类,重写关键方法如`startElement`、`endElement`和`characters`。 - 实例化`SAXParserFactory`,然后获取`SAXParser`。 - 使用`parse`方法解析XML文件...

    sax解析xml本地读取xml

    标题“sax解析xml本地读取xml”指的是使用SAX解析器来读取和解析存储在本地文件系统中的XML文件。这种方式适用于处理那些无法一次性加载到内存中的大型XML文档,或者对于内存有限的环境。 SAX解析的基本工作原理...

    一个关于sax解析xml的demo

    这个"Project1231_001_XML_SAX"可能包含了一个简单的XML文件和对应的SAX解析示例代码,通过运行这个项目,开发者可以了解如何在实际应用中使用SAX解析XML数据,以及如何处理XML文档中的不同结构。学习和理解SAX解析...

    java解析xml数据---sax解析器

    以下是使用SAX解析XML的基本步骤: 1. 创建一个实现DefaultHandler或ContentHandler接口的类,重写其中的方法,如startElement()、endElement()和characters(),用于处理XML文档的结构和数据。 2. 实例化SAX解析器...

    sax解析xml

    下面我们将深入探讨SAX解析XML的相关知识点。 1. **SAX解析器的初始化**:在Java中,我们通常使用`org.xml.sax.parsers.SAXParserFactory`类来创建并配置SAX解析器。首先,我们需要实例化一个SAXParserFactory对象...

    anroid SAX解析xml文件及实例

    以下是对SAX解析XML在Android中的详细解释以及实例代码分析。 **一、SAX解析XML原理** 1. **事件驱动**:SAX解析器在读取XML文档时,会调用预先定义好的处理器接口(如`DefaultHandler`)中的方法,如`...

    Dom,Sax,Xpath解析XML实例

    在实际开发中,XPath常与DOM或SAX结合使用,先由DOM或SAX解析XML,然后用XPath进行查询。 实例应用: 假设我们有一个XML文件,内容如下: ```xml &lt;name&gt;John Doe &lt;position&gt;Manager &lt;name&gt;Jane Smith ...

Global site tag (gtag.js) - Google Analytics