Android_XML解析

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.csdn.net/detail/tianjf0514/4367774

你可能感兴趣的:(xml,android,String,文档,attributes)