XML文件解析【安卓7】——SAX解析

XML文件解析

XML解析:XML技术是Android平台的应用基础,

   Android提供了多种解析XML的方式:SAX解析、DOM解析、PULL解析

SAX解析

SAX ——Simple  API  forXML  (XML简单的API)

——解析速度快、占用内存少

——提供一组简单的API用于解析XML文件

——SAX在解析XML文件前,先指定一个解析事件处理器(Handler),SAX会对XML文档进行简单的顺序扫描,当扫描到【文档(Document)的开始和结束、元素(Element)的开始和结束的】标记Tag时,会给之前指定的解析事件处理器发送消息,由处理器来处理相应的事件。 当XML文档扫描完毕,则整个解析过程结束。

SAX解析方法

  • 创建SAX解析器的工厂对象

  SAXParserFactory.newInstance

  • 创建SAXParser解析器对象

   SAXParserFactory.newInstance

  • XML文档开始时触发本方法

   DefaultHandler.startDocument ()

  • XML文档结束时触发本方法

  DefaultHandler.endDocument ()

  • 元素开始时触发本方法

   DefaultHandler.startElement (String uri, String localName, String qName, Attributes attributes)

  • 元素开始时触发本方法

  DefaultHandler.endElement (String uri, String localName, String qName, Attributes attributes)

    参数:

uri:命名空间

localName:不带命名空间的标签名

qName:带命名空间的标签名

attributes:所有属性和属性值

  • 读到元素内容时,触发本方法

  DefaultHandler. characters (char [] ch, int start, int length)

SAX解析代码

自定义xml文件存放到res/raw文件中

 1 public void onCreate(Bundle savedInstanceState) {
 2       super.onCreate(savedInstanceState);
 3         SAXParserFactory spf=SAXParserFactory.newInstance();//SAX解析器的工厂对象
 4         try {
 5             SAXParser sp=spf.newSAXParser();//SAX解析器对象
 6             //读取资源文件
 7             InputStream is=getResources().openRawResource(R.raw.book);
 8             //创建SAX事件处理器对象
 9             DefaultHandler dh=new DefaultHandler(){
10                 private String name;
11                 public void startElement(String uri, String localName,
12                         String qName, Attributes attributes)
13                         throws SAXException {
14                     name=localName;
15                 }
16                 //获得内容
17                 public void characters(char[] ch, int start, int length)
18                         throws SAXException {
19                     if("name".equals(name)){     //当标签名是name时,就去获得文本
20                         Toast.makeText(Sax0.thi s,new String(ch,start,length), 1000).show();
21                         name=null;
22                     }
23                 }
24             };
25             sp.parse(is, dh);
26         } catch (ParserConfigurationException e) {         e.printStackTrace();
27         } catch (SAXException e) {             e.printStackTrace();
28         } catch (IOException e) {             e.printStackTrace();        }
29   }

SAX解析

时间: 2024-10-13 11:39:55

XML文件解析【安卓7】——SAX解析的相关文章

解析xml文件并且输出(SAX解析器)

本文解析三个xml文件,难度依次增加 文件1:p1.xml <?xml version="1.0" encoding="UTF-8" ?> <persons> <person> <name>张三</name> <age>22</age> </person> </persons> 文件2:p2.xml <?xml version="1.0&quo

【Android高级】XMl文件的DOM、SAX、PULL三种解析方式全解

本来一直忙着期末考试的复习,但复习挺无聊的,偶然看到xml的解析方法,虽然以前做过,但感觉不是很熟悉了,所以抽点时间一口气把三种方式都复习了遍.这三种方法中DOM最耗内存,因为它是把整个文件加载进去然后进行分类整理的,PULL和SAX类似,只是SAX要用到一个解析类,类中的主要三个方法完成内容的解析,而PULL方法是Android特有的,根据获得的标签判断并解析,这也是安卓中最常使用的方法. 接下来给大家复习下,因为我觉得看代码更容易明白,讲解的就不多了. 首先我们准备好我们要解析的资源文件和封

XML学习总结-DOM和SAX解析-综合案例-(四)

============DOM解析    vs   SAX解析             ======== DOM解析 SAX解析 原理: 一次性加载xml文档,不适合大容量的文件读取 原理: 加载一点,读取一点,处理一点.适合大容量文件的读取 DOM解析可以任意进行增删改成 SAX解析只能读取 DOM解析任意读取任何位置的数据,甚至往回读 SAX解析只能从上往下,按顺序读取,不能往回读 DOM解析面向对象的编程方法(Node,Element,Attribute),Java开发者编码比较简单. S

XML - 十分钟了解XML结构以及DOM和SAX解析方式

引言 NOKIA 有句著名的广告语:"科技以人为本".不论什么技术都是为了满足人的生产生活须要而产生的.详细到小小的一个手机.里面蕴含的技术也是浩如烟海.是几千年来人类科技的结晶,单个人穷其一生也未必能掌握其一角.只是个人一直觉得主要的技术和思想是放之四海而皆准的,很多技术未必须要我们从头到尾再研究一遍.我们要做的就是站在巨人的肩膀上.利用其成果来为人们的需求服务. 随着移动互联网时代的大潮.越来越多的App不光是须要和网络server进行数据传输和交互,也须要和其它 App 进行数据

Tomcat源码分析——server.xml文件的加载与解析

前言 作为Java程序员,对于tomcat的server.xml想必都不陌生.本文基于Tomcat7.0的Java源码,对server.xml文件是如何加载和解析进行分析. 加载过程分析 Bootstrap的load方法用于加载tomcat的server.xml,实际是通过反射调用Catalina的load方法,代码如下: /** * Load daemon. */ private void load(String[] arguments) throws Exception { // Call

Android中XML文件的序列化生成与解析

首先,我把Person的实体类 package net.loonggg.test; public class Person { private int id; private String age; private String name; private String sex; private String address; public int getId() { return id; } public void setId(int id) { this.id = id; } public

SAX方式解析XML文件的方法分析

SAX(Simple API for XML)SAX的工作原理简单地说就是对文档进行顺序扫描,当扫描到文档(document)开始与结束.元素(element)开始与结束.文档(document)结束等地方时通知事件处理方法,由事件处理函数做相应动作,然后继续同样的扫描,直至文档结束.SAX解析方式适用于大型文档,因为他的解析是逐行进行不用像DOM中那样为所有节点创建对象,这样效率大大提高,所以虽然它不是W3C标准,但它却得到了广泛认可. 这是一个需要解析的XML文件: <?xml versio

XML文件解析之--DOM与SAX

xml文件又称‘可扩展性标记语言’,可以对文档和数据进行结构化处理,从而能够在部门.客户和供应商之间进行交换,实现动态内容生成,企业集成和应用开发. 我们在进行web开发的时候离不开xml文件,xml文件无处不在,这次就烂讨论一下xml常用的解析方法及其CRUD操作,欢迎大家交流指正. 我们先来看看两种解析方式的过程,比较一下他们的优劣之处. SAX解析方式:它对xml文档进行逐行扫描,一边扫描一边解析.当扫描到文档(document)开始与结束.元素(element)开始与结束.文档(docu

SAX方式解析xml文件查看天气

1.SAX方式解析xml文件的步骤: ①创建解析器工厂对象 ②使用当前配置的工厂参数创建SAXParser对象 ③解析xml文件 ④利用DefaultHandler创建事件驱动者 2.对于标签对象进行引用怎么办? ①定义当前解析的标签:private String tagName=null; ②在startElement()方法中赋值tagName:this.tagName=qName; ③在endElement()方法中将tagName赋值为空:this.tagName=null; ④在cha