Android中XML解析

本文介绍了XML的基本概念及其两种主要解析方式:DOM与SAX。详细对比了这两种方式的特点,并重点阐述了SAX的工作原理及其实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

XML全称叫“可扩展标记语言”,和HTML类似,和HTML所不同的是XML的标签是自定义的。

XML的两种解析方式比较

通常有两种常见的方式来解析XML:DOM解析和SAX解析。

DOM解析是把XML看成一棵树,有根节点,子节点。DOM解析XML文档的时候,首先要把XML文档全部装载的内存里面,然后解析成一棵树,然后在这棵树上操作,可以取节点内容以及添加和删除节点。

DOM的优点:操作简单方便

DOM的缺点:如果XML文档比较大,性能就存在问题了

SAX(Simple API for XML)解析,SAX是逐行解析,而且可以随时停止解析(比如说我读XML读到一半就找到了想要的信息,那么就可以停止解析了),

SAX的优点:逐行解析,随时可以停止。因此提高了性能,适合手机开发

SAX的缺点:操作比DOM复杂,不可以添加和删除节点


SAX的工作原理

SAX的工作原理简单的说就是对文档进行顺序扫描,当扫描的文档(document)开始和结束,元素(element)开始和结束等地方通知事件处理函数,由事件处理函数做相应的操作,然后继续扫描,直到文档结束。

大多数SAX实现都会产生以下类型的事件:

  • 读到整个文档(document)开始和结束时触发事件
  • 读到每一个XML元素(element)开始和结束时触发事件
  • 读到每一个XML元素里面的内容时触发事件

  • 处理文档的DTD或Schema时触发DTD或Schema事件
  • 解析错误时触发错误事件


SAX解析文档过程

对于如下文档

<doc>

<para>HelloWorld!</para>

</doc>

在解析文档的过程中会产生一下事件

Start document

Start element:doc

End element:doc

Start element:para

Characters:Hello World!

End element:para

End document


ContentHandler接口

ContentHandler提供了解析XML文档是所触发的一系列事件方法

l void startDocument()

l void endDocument()

l void startElement(String uri, String localName, string qName,Attributes atts)

l void endElement(String uri, String localName, string qName)

l void characters(char[] ch, int start, int length)

下面通过代码理解

http://download.youkuaiyun.com/detail/tianjf0514/4367774




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值