ITKeyword,专注技术干货聚合推荐

注册 | 登录

Android SAX读取XML文件

js_dada 分享于 2012-05-24

推荐:android_xml解析之 使用SAX读取XML文件

  SAX是一个解析速度快并且占用内存少的xml解析器,非常适合用于Android等移动设备。 SAX解析XML文件采用的是事件驱动,也就是说,它并不需要解析完整个文档,在

2020腾讯云共同战“疫”,助力复工(优惠前所未有!4核8G,5M带宽 1684元/3年),
地址https://cloud.tencent.com/act/cps/redirect?redirect=1054

2020阿里云最低价产品入口,含代金券(新老用户有优惠),
地址https://www.aliyun.com/minisite/goods

        SAX解析器在解析XML输入的构件时就报告事件,但不会以任何方式存储文档。由事件处理器决定是否要建立数据结构。实际上,DOM解析器是在SAX解析器的基础上建立起来的,它在接收到解析器事件时建立DOM树。DOM相对于SAX,显得更加笨重,对小文件的读写,虽然没有什么分别,但是文件一大起来就难以想象了,如果在移动设备上使用,肯定会严重影响用户体验,而SAX却是一个轻量级的XML解析器,很适合在移动设备上使用!现在,让我来介绍一下SAX在Android设备上的使用方法:

        第一步:首先建立一个getXML()的方法:

    private void getXML(URL url)
    {
    	try 
    	{
    		SAXParserFactory spf = SAXParserFactory.newInstance();
		SAXParser sp = spf.newSAXParser();
			
		XMLReader xr = sp.getXMLReader();
			
		SAXHandler handler = new SAXHandler();
		xr.setContentHandler(handler);
			
		InputStreamReader isr = new InputStreamReader(url.openStream(), "UTF-8");
		InputSource is = new InputSource(isr);
			
		xr.parse(is);
			
    	}
    	catch(Exception e)
    	{
    		e.printStackTrace();
    	}
    }


         第二步:当SAX解析器从本地或者从网络上的流读取到符合XML格式要求的内容,就会调用Handler类。SAX在android系统上提供了一个DefaultHandler的Handler子类,并且会自动调用这个DefaultHandler接口的相应方法!重写这个DefaultHandler接口,并命名为:SAXHandler:

import java.util.HashMap;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
import android.util.Log;

public class SAXHandler extends DefaultHandler{
		
	public void startDocument() throws SAXException
	{
		super.startDocument();
	}
	
	public void startElement(String uri, String localName, String name, Attributes attributes) throws SAXException
	{
		super.startElement(uri, localName, name, attributes);
	}
	
	public void characters(char ch[], int start, int length)
	{
	}
	
	public void endElement(String uri, String localName, String name) throws SAXException
	{
		super.endElement(uri, localName, name);
	}
	
	public void endDocument() throws SAXException
	{
                  super.endDocument();
	}

}

    在使用SAX解析器时,需要一个处理器来定义不同的解析器事件的事件动作。DefaultHandler接口定义了若干个回调方法。从上面的代码上可以看出最重要的几个:

    # startElement和endElement在每当遇到起始或终止标签时调用。

推荐:Android SAX解析xml文件

andorid读取xml文件内容方法有三种 sax dom pull,其中 pull是android自带的 1.先认识一下xml文件中的些术语 Xml代码  <xml version="1.0" encoding="UTF-8">  

    # characters每当遇到字符数据时调用。

    # startDocument和endDocument分别在文档开始和结束时调用一次。

    在这回调方法中,进行处理XML文件各个节点。

    在此之后,在调用getXML()方法的适当位置添加如下代码便可:

  URL url = new URL("http://www.----.com/----.xml");
  getXML(url);



 

推荐:Android 用sax解析xml文件

上次提到了用Pull的方法解析xml,这里又遇到了另外一种用sax DefaultHandler处理类的方法解析xml。   SAXParserFactory factory = SAXParserFactory.newInstance

        SAX解析器在解析XML输入的构件时就报告事件,但不会以任何方式存储文档。由事件处理器决定是否要建立数据结构。实际上,DOM解析器是在SAX解析器的基础上建立起来的,它在接收到解析器事

相关阅读排行


相关内容推荐

最新文章

×

×

请激活账号

为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。

您的注册邮箱: 修改

重新发送激活邮件 进入我的邮箱

如果您没有收到激活邮件,请注意检查垃圾箱。