您的位置 首页 方案

SAX PULL DOCUMENT解析XML总结

一、SAX解析1、继承DefaultHandler类,重写startDocument、startElement、character、endElement、endDocument方法,startDocu

一、SAX解析

1、承继DefaultHandler类,重写startDocument、startElement、character、endElement、endDocument办法,startDocument在读取时调用,可写一些实例化列表等;startElement在读取每个标签时调用,经过判别前史标签需求是否为需求获取的值的头;characters用来读取标签中的值;endElement读取标签的完毕,用来保存characters获取的值;endDocument一般不做处理。

2、调用,用SAXParser或许XMLReader来解析

SAXParser解析

SAXHandlerParseService saxForHandler = newSAXHandlerParseService();
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser saxParse = spf.newSAXParser();
saxParse.parse(input, saxForHandler);
ListMapString, Object>> userList = saxForHandler.getUser();

XMLReader解析

SAXHandlerParseService saxForHandler = new SAXHandlerParseService();

SAXParserFactory spf = SAXParserFactory.newInstance();

SAXParser saxParse = spf.newSAXParser();

// 为xmlReader设置内容处理器

XMLReader reader = saxParse.getXMLReader();

reader.setContentHandler(saxForHandler);

// 开端赋值

reader.parse(new InputSource(new StringReader(xml)));

List> userList = saxForHandler.getUser();

在解析时,一定要当心,不要疏忽空白的当地,Sax解析器会把它认为是一个TextNod

二、PULL解析

与SAX相似,相同有START_DOCUMENT、START_ELEMENT、CHARACTERS、END_ELEMENT、END_DOCUMENT

1、实例化XmlPullParser解析器,设置输入编码(setInput),取得事情类型(getEventType),用SAX相同的处理进行,next()办法往下持续读取

三、DOCUMENT解析

1、实例化DocumentBuilderFactory,代码如下:

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

DocumentBuilder builder = factory.newDocumentBuilder();

Document document = builder.parse(input);

Element root = document.getDocumentElement();

2、跟xml传入的数据结构进行处理

3、回来需求的列表值即可

工程下载:ParseTest.rar

四、三者差异

DOM:

解析器读入整个文档,然后构建一个驻留内存的树结构,然后代码就可以运用 DOM 接口来操作这个树结构。

长处:整个文档树在内存中,便于操作;支撑删去、修正、重新排列等多种功用;

缺陷:将整个文档调入内存(包含无用的节点),浪费时间和空间;

运用场合:一旦解析了文档还需屡次拜访这些数据;硬件资源足够(内存、CPU)

SAX/PULL:

事情驱动。当解析器发现元素开端、元素完毕、文本、文档的开端或完毕等时,发送事情,程序员编写呼应这些事情的代码,保存数据。

长处:不必事前调入整个文档,占用资源少

缺陷:不是耐久的;事情往后,若没保存数据,那么数据就丢了;无状况性;从事情中只能得到文本,但不知该文本属于哪个元素;

运用场合:只需XML文档的少数内容,很少回头拜访;一次性读取;机器内存少;

留意:SAX 解析器不创立任何目标。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/324310.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部