ImageVerifierCode 换一换
格式:DOCX , 页数:25 ,大小:115.36KB ,
资源ID:22768172      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/22768172.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Android学习笔记036之网络数据解析Word文档下载推荐.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Android学习笔记036之网络数据解析Word文档下载推荐.docx

1、DeclHandler是SAX的扩展。不是所有的语法分析器都支持它。EntityResolver:定义与装入实体关联的事件。只有少数几个应用程序注册这些事件。ErrorHandler:定义错误事件。许多应用程序注册这些事件以便用它们自己的方式报错。DefaultHandler:它提供了这些接LI的缺省实现。在大多数情况下,为应用程序扩,DefaultHandler并覆盖相关的方法要比直接实现一个接口更容易。SAX解析器的使用步骤:1、通过SAXParserFactory.newInstance()创建一个SAXParserFactory对象2、通过SAXParserFactory.newSAX

2、Parser()方法返回一个SAXParser解析器3、实例化一个DefaultHandler对象4、将第二步创建的SAXParser分配给解析器,对文档进行解析,将事件发送给处理器下面我们通过一个简单的例子体会一下SAX解析XML数据:首先是SAXHandler代码:package com.example.datasave;import android.util.Log;import org.xml.sax.Attributes;import org.xml.sax.SAXException;import org.xml.sax.helpers.DefaultHandler;import j

3、ava.util.ArrayList;import java.util.List;/* * Created by Devin on 2016/7/25. */public class SAXHandler extends DefaultHandler private CarModel mCarModel;private List mCarModels = new ArrayList();private static String TAG = SAXHandler;private String result;Overridepublic void startDocument() throws S

4、AXException super.startDocument(); Log.i(TAG, -startDocument);public void endDocument() throws SAXException super.endDocument();endDocument * 读到第一个元素标签开始的时候调用 * * param uri 命名空间的URI * param localName 元素标签名 * param qName 限定元素名 * param attributes 附加在元素上的属性 * throws SAXExceptionpublic void startElement

5、(String uri, String localName, String qName, Attributes attributes) throws SAXException super.startElement(uri, localName, qName, attributes); if (localName.equals(car) startElement mCarModel = new CarModel(); * 元素标签结束的时候回调 * param qName 限定元素名称public void endElement(String uri, String localName, Str

6、ing qName) throws SAXException super.endElement(uri, localName, qName);car_name mCarModel.setCar_name(result); else if (localName.equals(car_color mCarModel.setCar_color(result);car_pice mCarModel.setCar_pice(result);endElement System.out.println(- + mCarModel); mCarModels.add(mCarModel); mCarModel

7、= null; * 获取到元素节点的内容 * param ch 字符 * param start 字符数组起始位置 * param length 字符数组长度public void characters(char ch, int start, int length) throws SAXException super.characters(ch, start, length); result = new String(ch, start, length);public List getCarModels() return mCarModels;Activity代码:btn_xml_sax =

8、(Button) findViewById(R.id.btn_xml_sax); btn_xml_sax.setOnClickListener(new View.OnClickListener() Override public void onClick(View view) getCar(); System.out.println(parserSax(); tv_xml_sax.setText(parserSax(); );private void getCar() /获取到需要解析的xml文件 InputStream inputStream = null; try inputStream

9、= this.getAssets().open(car.xml /1、通过SAXParserFactory.newInstance()创建一个SAXParserFactory SAXParserFactory factory = SAXParserFactory.newInstance(); /2、通过SAXParserFactory.newSAXParser()方法返回一个SAXParser解析器 SAXParser parser = factory.newSAXParser(); /3、实例化一个DefaultHandler对象 SAXHandler handler = new SAXHa

10、ndler(); /4、将第二步创建的SAXParser分配给解析器,对文档进行解析,将事件发送给处理器 parser.parse(inputStream, handler); inputStream.close(); mCarModels = handler.getCarModels(); catch (Exception e) e.printStackTrace();private String parserSax() StringBuffer buffer = new StringBuffer(); for (int i = 0; i mCarModels.size(); i+) buf

11、fer.append(车名: buffer.append(mCarModels.get(i).getCar_name() + , 颜色: buffer.append(mCarModels.get(i).getCar_color() + 价格: buffer.append(mCarModels.get(i).getCar_pice() + 元n return buffer.toString();实现效果图:这样就可以实现SAX方式解析XMl数据1.3、DOM方式解析XML数据 DOM方式是将XML文档中的内容全部以树的方式加载到内存中,检索的时候需要将文档内容全部加载到内存中和构造树形结构完成之

12、后才会开始,允许开发人员使用DOM API对文档进行读取、搜索、修改、添加和删除等操作。DOM解析方式的原理:使用DOM对XML文件进行操作时,首先要解析文件,将文件分为独立的元素、属性和注释等,然后以节点树的形式在内存中对XML文件进行表示,就可以通过节点树访问文档的内容,并根据需要修改文档。常用的DoM接口和类:Document:该接口定义分析并创建DOM文档的一系列方法,它是文档树的根,是操作DOM的基础。Element:该接口继承Node接口,提供了获取、修改XML元素名字和属性的方法。Node:该接口提供处理并获取节点和子节点值的方法。NodeList:提供获得节点个数和当前节点的方

13、法。这样就可以迭代地访问各个节点。DOMParser:该类是Apache的Xerces中的DOM解析器类,可直接解析XML文件。DOM解析方式使用步骤:1、通过DocumentBuilderFactory.newInstance()创建一个DocumentBuilderFactory对象实例2、通过factory.newDocumentBuilder()创建一个DocumentBuilder对象实例3、然后加载XML文档(Document)4、然后获取文档的根结点(Element)5、然后获取根结点中所有子节点的列表(NodeList)6、然后使用再获取子节点列表中的需要读取的结点。下面通过一

14、个例子体会一下DOM方式解析数据:private String parserDom() List modelList = new ArrayList /1、通过DocumentBuilderFactory.newInstance()创建一个DocumentBuilderFactory对象实例 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); /2、通过factory.newDocumentBuilder()创建一个DocumentBuilder对象实例 DocumentBuilder builder =

15、 factory.newDocumentBuilder(); /3、将需要解析的文档加载到内存中 Document document = builder.parse(getAssets().open(); /4、获取到根节点 Element root = document.getDocumentElement(); /5、获取根节点的所有子节点列表 NodeList rootList = root.getElementsByTagName( /6、开始读取需要的节点 rootList.getLength(); CarModel model = new CarModel(); Node car

16、= rootList.item(i); NodeList childList = car.getChildNodes(); for (int j = 0; j childList.getLength(); j+) Node childNode = childList.item(j); /判断子节点类型是否是元素节点 if (childNode.getNodeType() = Node.ELEMENT_NODE) Element childName = (Element) childNode; String nodeName = childName.getNodeName(); if (node

17、Name.equals( model.setCar_name(childName.getFirstChild().getNodeValue(); else if (nodeName.equals( model.setCar_color(childName.getFirstChild().getNodeValue(); model.setCar_pice(childName.getFirstChild().getNodeValue(); modelList.add(model);使用DOM方式解析).append( modelList.size(); buffer.append(modelLis

18、t.get(i).getCar_name() + buffer.append(modelList.get(i).getCar_color() + buffer.append(modelList.get(i).getCar_pice() + 实现的效果图1.4、PULL方式XML数据 Android并未提供对Java StAX API的支持。但是,Android附带了一个pull解析器,其工作方式类似于StAX。它允许用户的应用程序代码从解析器中获取事件,这与SAX解析器自动将事件推入处理程序相反。PULL解析器的运行方式和SAX类似,都是基于事件的模式。不同的是,在PULL解析过程中返回的是数

19、字,且我们需要自己获取产生的事件然后做相应的操作,而不像SAX那样由处理器触发一种事件的方法,执行我们的代码。PULL解析器小巧轻便,解析速度快,简单易用,非常适合在Android移动设备中使用,Android系统内部在解析各种XML时也是用PULL解析器,Android官方推荐开发者们使用Pull解析技术。PULL 的工作原理:XML pull提供了开始元素和结束元素。当某个元素开始时,我们可以调用parsernextText从XML文档中提取所有字符数据。当解释到一个文档结束时,自动生成EndDocument事件。常用的XML PULL的接口和类:XmlPullParser:XML pul

20、l解析器是一个在XMLPULL VlAP1中提供了定义解析功能的接口。XmlSerializer:它是一个接口,定义了XML信息集的序列。XmlPullParserFactory:这个类用于在XMPULL V1 API中创建XML Pull解析器。XmlPullParserException:抛出单一的XML pull解析器相关的错误。使用PULL解析器解析的步骤:1、1、创建一个XmlPullParser对象实例,有两种方式:Xml.newPullParser();通过XmlPullParserFactory.newInstance()获取到XmlPullParserFactory对象实例,

21、然后通过factory.newPullParser()创建2、得到文件流,设置输出方式3、获得解析到的事件类别,这里有开始文档,结束文档,开始标签,结束标签,文本等事件4、开始解析和获取数据下面通过实例体会一下这种解析方式:private String parserPull() /1、创建一个XmlPullParser对象实例,有两种方式: XmlPullParser pullParser = Xml.newPullParser(); CarModel model = null; /2、得到文件流,设置输出方式 pullParser.setInput(getAssets().open(), U

22、TF-8 /3、获得解析到的事件类别,这里有开始文档,结束文档,开始标签,结束标签,文本等事件 int eventType = pullParser.getEventType(); String name = while (eventType != XmlPullParser.END_DOCUMENT) name = pullParser.getName(); switch (eventType) case XmlPullParser.START_DOCUMENT: eak; case XmlPullParser.START_TAG: if (name.equals( model = new CarModel(); else if (name.equals( model.setCar_name(pullParser.nextText(); model.setCar_color(pullParser.nextText(); model.setCar_pice(pullParser.nextText(); break; case XmlPullParser.END_TAG: model = null; eventType = pullParser.next();使用PULL方式解析 for (int i = 0

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1