现在的位置: 首页 > 综合 > 正文

xml三种解析

2012年09月01日 ⁄ 综合 ⁄ 共 1163字 ⁄ 字号 评论关闭

dom解析:
 首先由DocumentBuilderFactory的静态方法newInstance实例化一个,文档构建器工场,在利用此工场创建一个文档构造器,文档构造器将xml文件输入流解析成一个document对象,
 可以从document中获取一些数据,document提供的方法有根据标签名获取Element元素,Element元素又可以获取属性,子元素等,也可以直接获取文本内容。从而将自己的数据直接
 提取出来,
sax解析:
 由SAXParserFactory的静态方法newIntance实例化一个解析工场,解析工场调用newSAXParser创建一个SAXParser,该SAXParser将使用指定的处理器(实现了DefaultHandler)处理
 xml文件输入流,该处理器需要实现几个事件的接入点,首先是文档开始处理时的回调方法startDocument(),元素开始时的方法startElement,字符处理方法characters,元素结束时回调方法
 endElement,文档结束时回调方法endDocument;
pull解析:
 pull解析首先由Xml的静态方法newPullParser()来创建一个解析器,可以设置解析输入流的字符解析码,比如utf-8,此解析器获取事件类型后,对事件类型进行判断,事件类型分为
 XmlPullParser.START_DOCUMENT(文档开始事件),XmlPullParser。START_TAG(标签开始事件),XmlPullParser.END_TAG(标签结束事件),XmlPullParser.END_DOCUMENT(文档结束事件).
 可以根据这几个事件来解析数据,比如当开始标签后,可以获取该标签的属性值,可以获取文本值等等。
 pull解析与sax解析的区别是,pull解析在解析的过程中拉模式,类似于web,想要获取的数据主动方都是使用者,所以pull解析是可以控制的,当需要触发下一个事件是,程序可以主动触发下一个事件,
 触发下一个事件是通过程序调用解析器的next方法触发的,不需要触发事件而直接解析结束时,程序中直接返回就可以,而sax解析是不可以控制的,所有xml文件中的数据都会被扫描到。

当你需要处理XML文档时,你的首要选择是使用DOM(文档对象模型)还是使用SAX(用于XML的简单API),即当前使用的两个主要的XML API。你可以使用任何一种(或者在同一时间使用两种)来处理XML文档,然而DOM将文档载入到内存中处理,而SAX则相反,它可以检测一个即将到来的 XML流,由此并不需要所有的XML代码同时载入到内存中。如果xml里的内容关系非常复杂,可以使用Dom解析,如果文档内容小,而且需要解析所有的数据,可以使用SAX解析。

 

抱歉!评论已关闭.