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

android中使用sax解析xml

阅读更多

SAX解析允许在读取文档的时候,即对文档进行处理,而不必等到整个文档装载完才会文档进行操作。
SAX采用事件处理的方式解析XML文件,利用 SAX 解析 XML 文档,涉及两个部分:解析器和事件处理器:
解析器可以使用JAXP的API创建,创建出SAX解析器后,就可以指定解析器去解析某个XML文档。
解析器采用SAX方式在解析某个XML文档时,它只要解析到XML文档的一个组成部分,都会去调用事件处理器的一个方法,解析器在调用事件处理器的方法时,会把当前解析到的xml文件内容作为方法的参数传递给事件处理器。
事件处理器由程序员编写,程序员通过事件处理器中方法的参数,就可以很轻松地得到sax解析器解析到的数据,从而可以决定如何对数据进行处理。

阅读ContentHandler API文档,常用方法:startElement、endElement、characters

Sax解析的流程:
1.使用SAXParserFactory创建SAX解析工厂
SAXParserFactory spf = SAXParserFactory.newInstance();
2.通过SAX解析工厂得到解析器对象  
SAXParser sp = spf.newSAXParser();
3.通过解析器对象得到一个XML的读取器
XMLReader xmlReader = sp.getXMLReader();
4.设置读取器的事件处理器  
xmlReader.setContentHandler(new BookParserHandler()); 其中BookParserHandler extends DefaultHandler
5.解析xml文件 

xmlReader.parse("book.xml"); book.xml需放在工程下的src目录或者是:xmlReader.parse("D:\\test\\person.xml")
第二种方法是xmlReader.parse(InputStream);
通常我都是用读取输入流的方式(xmlReader.parse(InputStream))去解析 不管使用文件还是从网络上获取文件 终极都是转化为输入流读到内存中进行解析
同时还会把3-5步骤 会写在一起parse(InputStream is, DefaultHandler dh)

 

 

extends DefaultHandler 就是主要的编码工作 添加未实现的方法

首先设置一个标志boolean flag =true或者private String currentElement; 用来记住当前元素的名称 当保存文本节点后 将flag =false 或者currentElement=“”

1.public void characters(char[] ch, int start, int length)
    throws SAXException  {} 用来读取元素的下一个文本节点 如String content=new String(ch,start,length);

将读到的内容存到Person bean中

public void characters(char[] ch, int start, int length)
				throws SAXException 
		{
			String content=new String(ch,start,length);//元素的下一个文本节点
			//读到 name age元素的时候 读取内容将其保存到bean中
			if("name".equals(currentElement))
			{
				person.setName(content);
				
			}else if("age".equals(currentElement))
			{
				person.setAge(new Short(content));
			}
			
			
		}

 

 2.startElement开始元素事件

 

		public void startElement(String uri, String localName, String qName,
				Attributes attributes) throws SAXException 
		{
			//当元素有属性值的时候就先属性值保存到 bean 
			if("person".equals(qName))
			{	
				person=new Person();
				
				person.setId(Integer.parseInt(attributes.getValue("id")));
				
				
			}else if("name".equals(qName)||"age".equals(qName))
			{
				//保持当前元素名称
				currentElement = qName;
			}
			
		}

 

 

 3.endElement结束元素事件

 

public void endElement(String uri, String localName, String qName)
				throws SAXException 
		{
			
			if("person".equals(qName))
			{	
				persons.add(person);
				
			}else if("name".equals(qName)||"age".equals(qName))
			{	//读到结束元素到时候将currentElement设置为null,以便读到下一个元素的时候可以记住
		
				
				currentElement = "";
			}
	
		}

 

 

 

 表达能力有限可以看我附件中说明  希望对各位有帮助

分享到:
评论

相关推荐

    Android中使用sax解析xml文件的方法

    首先,让我们了解一下SAX解析XML的基本流程。当SAX解析器读取XML文件时,它会按照文档顺序触发一系列事件,这些事件对应于ContentHandler接口中定义的方法。以下是ContentHandler接口的一些关键方法: 1. `start...

    android 使用sax解析XML

    本教程将详细讲解如何在Android中使用SAX解析XML。 首先,要使用SAX解析XML,我们需要理解其工作原理。SAX解析器会逐个读取XML文档的元素,每当遇到文档的开始、结束、文本等事件时,就会触发相应的回调方法。...

    android使用SAX解析XML

    下面我们将详细讨论如何在Android中使用SAX解析XML。 首先,我们需要了解SAX解析的基本原理。SAX解析器在读取XML文档时,会触发一系列的事件,如开始文档、开始元素、结束元素、字符数据等。开发者需要定义一个...

    [Android]使用SAX解析XML文件

    总结,SAX解析XML在Android开发中是一个实用且高效的解决方案,尤其适用于处理大型XML文件。通过创建自定义的事件处理器,可以灵活地解析和处理XML数据,满足各种业务需求。不过,需要注意的是,由于SAX是基于事件的...

    android使用SAX解析xml

    - `xmlSAXPaserDemo`可能是一个包含示例代码的Android项目,用于演示如何实际使用SAX解析XML文件。 - 项目中可能包括网络请求模块、SAX解析器处理类以及展示解析结果的UI部分。 通过以上步骤,开发者可以在...

    Android SAX 解析XML

    下面详细介绍Android中使用SAX解析XML的关键步骤和相关知识点: 1. 引入库:在Android项目中,SAX解析器已经内置于`org.xml.sax`包中,无需额外导入库。 2. 创建事件处理器:你需要创建一个类来实现`...

    Android XML解析——Sax解析XML

    ### Android中使用SAX解析XML 1. **引入库**:在Android项目中,SAX解析器已经内置在`org.xml.sax`包中,无需额外导入库。 2. **创建ContentHandler**:创建一个实现了`org.xml.sax.ContentHandler`接口的类,重写...

    android 使用Sax解析XML 源码实例

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

    android sax 解析xml

    本文将详细介绍如何在Android中使用SAX解析XML。 首先,理解SAX解析的基本原理。SAX解析器在读取XML文档时,会触发一系列的事件,例如开始文档、结束文档、开始元素、结束元素等。开发者需要创建一个实现了`...

    android SAX解析XML.docx

    在Android中使用SAX解析XML,主要涉及以下几个关键步骤: 1. **创建ContentHandler**:ContentHandler是SAX解析的核心,它定义了一系列的回调方法,用于处理XML文档的各种事件。比如`startDocument()`会在解析开始...

    android sax解析xml文件

    通过以上内容,你应该对Android中使用SAX解析XML有了深入的理解。实践过程中,可以结合具体XML文件结构和业务需求,灵活运用SAX解析器进行数据处理。同时,了解和掌握错误处理机制,以应对可能出现的异常情况,是...

    SAX解析xml文件源码

    **在Android中使用SAX解析XML:** 1. 引入XML解析库:在Android项目中,通常已经包含了Apache的XML解析库,无需额外添加依赖。 2. 创建事件处理器:实现`DefaultHandler`,覆盖`startElement`、`endElement`和`...

    Android XML解析之SAX解析

    XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于Android开发中,用于存储配置、数据交换等。...通过学习和实践,你可以掌握在Android中使用SAX解析XML的技能,提升数据处理的能力。

    27.使用SAX解析XML.rar

    本教程将详细讲解如何在Android中使用SAX解析XML。 SAX解析器是事件驱动的,它逐行读取XML文档,当遇到特定的元素、属性或事件时,会触发相应的回调函数。这种方式避免了整个XML文档加载到内存中,因此对于大型XML...

    Sax解析xml文件

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

    android 实用sax 读取xml文件内容 附

    以下我们将逐步讲解如何在Android中使用SAX解析XML文件。 首先,我们需要创建一个`DefaultHandler`的子类,这个类是SAX解析过程中的事件处理器。在这个子类中,我们需要重写几个关键的方法,如`startElement`、`...

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

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

    android SAX解析String类型 XML 字符串

    在Android中,我们可以使用`DefaultHandler`作为SAX解析器的基类,创建一个继承自`DefaultHandler`的自定义处理器类,然后重写其中的方法,如`startElement`、`endElement`和`characters`,来处理XML中的元素和内容...

Global site tag (gtag.js) - Google Analytics