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

sax解析xml详解

    博客分类:
  • java
 
阅读更多

 解析xml并打印出所有的属性名称和文本内容

 

1 test-a.xml文件

<?xml version="1.0" encoding="UTF-8"?>
	<result>
			<man>
				<name>sky</name>
				<age>18</age>
				<sex>1</sex>
			</man>
	</result>

 2 自定义handler的编写

package com.java.xml.SAX;

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

	/**
	 * 自定义sax解析器
	 * @author Administrator
	 *
	 */
	public class MySAXHandler extends DefaultHandler {
		
		public void print(String str)
		{
			System.out.println(str);
		}
		
		public void startDocument() throws SAXException 
		{
			print("sax event:start document");
		}
		
		public void endDocument() throws SAXException
		{
			print("sax event:end document");
		}
		
		public void startElement(String nameSpaceUri,
				String localName,String qName,
				Attributes attr) throws SAXException
		{
			print("sax event:start element["+qName+"]");
			
			//如果有属性,打印属性
			for (int i = 0; i < attr.getLength(); i++)
			{
				print("attribute:"+attr.getLocalName(i)+"value:"+attr.getValue(i));
			}
		}
		
		public void endElement(String nameSpaceUri,
				String localName,String qName) throws SAXException
		{
			print("sax event:end element["+qName+"]");
		}
		
		public void characters(char[] ch,int start,int length) throws SAXException
		{
			print("sax event:characters["+new String(ch,start,length).trim()+"]");
		}

	}

 3 java sax访问,主要功能是遍历xml文件并按层次打印出所有的节点名称和文本内容

package com.java.xml.SAX;

	import java.io.File;

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

	/**
	 * 为解决DOM的问题,出现了SAX.SAX ,事件驱动。
	 * 当解析器发现元素开始、元素结束、文本、文档的开始或结束等时,
	 * 发送事件,程序员编写响应这些事件的代码,保存数据。
	 * 优点:不用事先调入整个文档,占用资源少;
	 * SAX解析器代码比DOM解析器代码小,适于Applet,下载。
	 * 缺点:不是持久的;事件过后,若没保存数据,那么数据就丢了;
	 * 无状态性;从事件中只能得到文本,但不知该文本属于哪个元素;
	 * 使用场合:Applet;只需XML文档的少量内容,很少回头访问;机器内存少;
	 * @author Administrator
	 *
	 */
	public class SaxA {

		/**
		 * dom4j解析
		 */
		public static void dom()
		{
			try 
			{
				File xml = new File("D:/新的开始/学习笔记/java学习/xml解析/test-a.xml");
				SAXParserFactory factory = SAXParserFactory.newInstance();
				SAXParser parser = factory.newSAXParser();
				parser.parse(xml, new MySAXHandler());
				
	//			 // 建立SAX 2解析器...
	//	         XMLReader xr = XMLReaderFactory.createXMLReader();
	//
	//	         // 安装ContentHandler...
	//	         xr.setContentHandler( new MySAXHandler() );
	//
	//	            // 解析文件...
	//	         xr.parse( new InputSource(new FileReader("D:/新的开始/学习笔记/java学习/xml解析/test-a.xml" )));
		
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		
		/**
		 * @param args
		 */
		public static void main(String[] args) {
			// TODO Auto-generated method stub
			
			dom();
			
		}

	}

 4 执行SaxA对象的main方法,输出如下:

sax event:start document
	sax event:start element[result]
	sax event:characters[]
	sax event:start element[man]
	sax event:characters[]
	sax event:start element[name]
	sax event:characters[sky]
	sax event:end element[name]
	sax event:characters[]
	sax event:start element[age]
	sax event:characters[18]
	sax event:end element[age]
	sax event:characters[]
	sax event:start element[sex]
	sax event:characters[1]
	sax event:end element[sex]
	sax event:characters[]
	sax event:end element[man]
	sax event:characters[]
	sax event:end element[result]
	sax event:end document
 4 注意点:

给我的感觉,sax解析时也会长生空白的element,

(sax event:characters[]这种就是空白text-element).

分享到:
评论

相关推荐

    SAX解析XML

    **SAX解析XML详解** XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于数据交换、配置文件和Web服务等领域。SAX(Simple API for XML)是XML解析的一种方式,它采用事件驱动模型,以流式处理...

    android sax解析xml

    本篇将详细讲解如何在Android环境中使用SAX解析XML。 1. **SAX解析的基本原理** SAX解析器读取XML文档时,遇到每个元素、属性、文本等都会触发相应的事件,开发者需要注册事件处理器来处理这些事件。这种方式适合...

    使用SAX解析XML文件个人总结

    ### 使用SAX解析XML文件详解 #### 一、XML与SAX简介 XML(Extensible Markup Language,可扩展标记语言)是一种用于标记电子文件使其具有结构性的标记语言,旨在克服HTML的一些不足,使得数据能够被不同系统间共享...

    android学习笔记1--SAX解析XML

    ### Android学习笔记1—SAX解析XML #### SAX解析XML概览 在Android开发中,XML文件被广泛用于布局设计、资源定义等场景。而为了处理这些XML文件,开发者需要了解不同的XML解析技术,其中SAX(Simple API for XML)...

    sax解析xml实例

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

    android SAX PULL 解析XML文件 代码 详解

    总之,Android提供了SAX和PULL两种解析XML的手段,开发者可以根据具体情况灵活选择。在内存有限或者需要高效处理大量XML数据的情况下,SAX可能是更好的选择;而在追求简洁代码和快速开发的场合,PULL解析则更为便捷...

    Android创建与解析XML(三)——详解Sax方式

    本文将深入讲解如何在Android中使用SAX解析XML以及如何通过SAX方式创建XML。 **1. SAX解析XML** SAX解析XML的基本流程是:创建SAXParserFactory,通过该工厂实例化SAXParser,然后设置事件处理器(ContentHandler...

    dom4j解析xml详解

    ### DOM4J解析XML详解 #### 一、DOM4J简介与特性 DOM4J是一个由dom4j.org开发的开源XML解析包,专为Java平台设计,它不仅支持DOM、SAX和JAXP标准,还巧妙地融入了Java集合框架,使其成为Java开发者在处理XML数据时...

    java解析XML详解

    Java作为一门流行的编程语言,提供了多种方式来解析XML文档,以便开发者能够有效地读取、操作和转换XML数据。本文将深入探讨Java解析XML的各种方法及其应用场景,旨在为读者提供全面而深入的理解。 ### Java解析XML...

    java解析XML详解.pdf

    Java解析XML技术详解: 在信息技术领域,XML(Extensible Markup Language,可扩展标记语言)是一种被广泛使用的标记语言,用于存储和传输数据。它与HTML相似,也是一种标记语言,但是HTML用于网页的格式化,而XML...

    Android编程使用sax解析xml数据的方法详解

    本篇文章将详细介绍如何在Android中使用SAX解析XML数据。 首先,我们需要一个XML文件作为解析的源数据。例如: ```xml &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;name&gt;will &lt;age&gt;21 &lt;name&gt;will2 &lt;age&gt;...

    java_Dom4j解析XML详解

    Java DOM4J解析XML详解 XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于数据交换、配置文件和文档存储等领域。DOM4J是Java中一个强大的、轻量级的处理XML的库,它提供了丰富的API来读取、...

    解析xml详解及jar及源码

    本文将深入解析XML的基本概念、结构、解析方法,并介绍与之相关的Java库——Jar包及其源码。 XML的核心是其结构化特性,它通过元素(Element)、属性(Attribute)和文本内容来描述数据。每个XML文档都由一个根元素...

    详解android使用SAX解析XML文件

    本文将深入探讨如何使用SAX解析XML,这是一种轻量级且高效的方法,尤其适合内存和计算资源有限的环境,如Android设备。 SAX(Simple API for XML)解析器遵循事件驱动模式,与DOM(Document Object Model)解析器...

    xml解析与封装详解

    XML 解析与封装详解 XML(eXtensible Markup Language),即可扩展的标记性语言,是一种用于存储和传输数据的语言。XML 文件的所有标记都是可扩充的,不像 HTML 那样是固定的,而是由用户自行规定出来的。XML 的...

Global site tag (gtag.js) - Google Analytics