解析Xml有三种方式可选,sax ,dom ,pull ,,各有各的优点,但在android上是不推荐使用DOM来解析的
一般都用SAX和PULL 这两个性能相近, SAX的解析方式大家可以去看MARS的教程 讲的也比较好喔
PULL的话我个人觉得处理事件比较简单,所以就给不懂的同学详细讲讲,嘿嘿....希望大家都能明白
感谢 传智的张老师,黎老师, 感谢勇军哥
首先给大家看看我的笔记
那么我们就开始吧
很简单,这是我们要解析的xml文件,直接放在src之下
- <?xml version="1.0" encoding="UTF-8"?>
- <students>
- <student id = "1">
- <name>伍业雄</name>
- <age>22</age>
- </student>
- <student id = "2">
- <name>陈俊安</name>
- <age>21</age>
- </student>
- <student id = "3">
- <name>王世铭</name>
- <age>22</age>
- </student>
- </students>
复制代码
写个bean 嘿嘿.<我都没学java web 原来这东西叫Bean>
-
- package tree.love.bean;
- import java.io.Serializable;
- public class Person implements Serializable{
- private int id ;
- private String name ;
- private int age ;
- public int getId() {
- return id;
- }
- public void setId(int id) {
- this.id = id;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public int getAge() {
- return age;
- }
- public void setAge(int age) {
- this.age = age;
- }
- public Person(){}
- public Person(String name ,int age )
- {
- this.name = name ;
- this.age = age ;
- }
- @Override
- public String toString() {
-
- return this.name +",,"+this.age;
- }
- }
复制代码
然后这就是解析xml的代码了.返回一个List<T>
-
- package tree.love.xmlUitl;
- import java.io.IOException;
- import java.io.InputStream;
- import java.util.ArrayList;
- import java.util.List;
- import org.xmlpull.v1.XmlPullParser;
- import org.xmlpull.v1.XmlPullParserException;
- import tree.love.bean.Person;
- import android.util.Log;
- import android.util.Xml;
- public class MyPullxml {
- private static final String XMLPULL_INFO = "XmlPull_Info";
- public static List<Person> getDate(InputStream inStream)
- {
- List<Person> persons = null ;
- Person currentPerson = null ;
-
- /**
- * android给我们提供了一个工具类'Xml'
- * 通过这个工具类可以很方便地去new一个Pull的解析器,返回类型是XmlPullParser
- *
- **/
- XmlPullParser xmlPull = Xml.newPullParser();
-
- try {
- /**
- * 提供的xml内容方式都是以输入流的方式InputStream
- **/
- xmlPull.setInput(inStream,"UTF-8");
- /**
- * 触发事件getEventType() =>返回事件码
- * 当它遇到某个字符,如果符合xml的语法规范.
- * 它就会出发这个语法所代表的数字
- * Returns the type of the current event (START_TAG, END_TAG, TEXT, etc.)
- **/
- int eventCode = xmlPull.getEventType();
-
- /**
- * 解析事件:
- * StartDocument,文档开始
- * Enddocument,文档结束
- *
- * 每次读到一个字符,就产生一个事件
- * 只要解析xml文档事件不为空,就一直往下读
- **/
- while (eventCode != XmlPullParser.END_DOCUMENT)
- {
- switch (eventCode)
- {
-
- case XmlPullParser.START_DOCUMENT: //文档开始事件,可以做一些数据初始化处理
- persons = new ArrayList<Person>();
- break;
-
- case XmlPullParser.START_TAG://元素开始.
- String name = xmlPull.getName();
- if(name.equalsIgnoreCase("student"))
- {
- currentPerson = new Person();
- currentPerson.setId(new Integer(xmlPull.getAttributeValue(null, "id")));
- }
- else if(currentPerson != null)
- {
- if(name.equalsIgnoreCase("name"))
- {
- currentPerson.setName(xmlPull.nextText());
- }
- else if(name.equalsIgnoreCase("age"))
- {
- currentPerson.setAge(new Short(xmlPull.nextText()));
- }
- }
- break;
- case XmlPullParser.END_TAG: //元素结束,
- if(currentPerson != null && xmlPull.getName().equalsIgnoreCase("student"))
- {
- persons.add(currentPerson);
- currentPerson = null ;
- }
- break;
- }
- eventCode = xmlPull.next();//进入到一下一个元素.
- }
- } catch (XmlPullParserException e) {
-
- Log.i(XMLPULL_INFO, e.toString());
- } catch (IOException e) {
-
- Log.i(XMLPULL_INFO, e.toString());
- }
- return persons;
- }
- }
复制代码
最后xml的数据这东西 写好之后最好能用Android Junit 一下.再与之数据交互 ,放进listView 或者Gridview
- package tree.love.action;
- import java.io.InputStream;
- import java.util.List;
- import tree.love.bean.Person;
- import tree.love.xmlUitl.MyPullxml;
- import android.test.AndroidTestCase;
- import android.util.Log;
- public class xmlText extends AndroidTestCase {
- public void PullXmlText() throws Exception
- {
- InputStream instream = this.getClass().getClassLoader().getResourceAsStream("student.xml");
- List<Person> persons = MyPullxml.getDate(instream);
- for(Person person : persons)
- {
- Log.i("XML", person.toString());
- }
- }
- }
复制代码
分享到:
相关推荐
Android系统提供了一种轻量级的XML解析方式——PULL解析器(Pull Parser),它适用于处理大型XML文档,因为它不需要像DOM解析器那样一次性加载整个XML文档到内存中。PULL解析器通过事件驱动的方式,按需解析XML文档...
本教程将详细介绍如何在Android中利用Pull解析器(PullParser)来读取XML文件,这是一种高效且内存友好的方式。 首先,让我们了解什么是Pull解析器。Pull解析器是一种事件驱动的解析模型,它不创建整个XML文档树,...
Pull解析器(XMLPullParser)是Android SDK提供的一种轻量级、高效的XML解析方式,它不需要创建整个XML文档的树结构,而是通过事件触发的方式解析XML,从而节省内存资源。以下是一些关于封装Pull解析XML的关键知识点...
PullParser是Android提供的一种更高效的XML解析方式,它是基于事件的解析模型,但比SAX更简单易用。PullParser通过拉动(pulling)数据来解析XML,提供向前看的能力,可以在解析过程中跳过不关心的数据。 4. 示例...
7. **应用场景**:Android系统配置、网络API响应、XML配置文件等都可能涉及XML Pull解析。 总之,Android的XML Pull解析器是一个轻量级且高效的工具,适用于处理XML数据。通过理解其基本原理和操作方法,开发者可以...
在实际开发中,如Android的布局文件解析、配置文件读取或者从网络获取XML数据时,都可以使用Pull解析器进行处理。由于其高效和轻量级的特性,尤其在资源有限的环境中,Pull解析是首选的XML处理方式。 在博客链接...
在Android中,XML解析主要有三种方式:DOM解析、SAX解析和Pull解析。DOM解析会将整个XML文件加载到内存,形成一个树形结构,适合小规模的XML文件;SAX解析是基于事件的,逐行读取,不会占用太多内存,但编程相对复杂...
Pull解析器是一种轻量级的解析方式,它允许程序在解析XML时按需获取数据,而不需要一次性加载整个文档到内存,从而提高了效率和资源利用率。 首先,我们来了解XML的基本结构。XML文件由一系列元素构成,每个元素由...
要实现PULL解析XML,首先需要创建一个`XmlPullParserFactory`工厂对象,然后用它创建`XmlPullParser`解析器实例。接着,我们需要设置输入源,通常是XML文件的输入流。例如: ```java XmlPullParserFactory factory ...
在Android平台上,XML解析是处理XML文档的关键技术,通常有两种主要的解析方式:DOM(Document Object Model)解析和Pull解析。 DOM解析将整个XML文档加载到内存中,形成一个树形结构,可以方便地访问和修改任何...
本项目主要关注的是XML的创建和使用Pull解析器来解析XML,这是Android系统中处理XML数据的一种高效方法。接下来,我们将详细讨论这两个知识点。 首先,XML(Extensible Markup Language)是一种用于标记数据的语言...
在Android开发中,异步下载图片和XML解析是常见的任务,尤其在构建应用程序时,如豆瓣电影这样的在线服务。这两个技术对于提供流畅的用户体验至关重要,因为它们允许在后台处理数据和资源,避免阻塞主线程。 一、...
在Android开发中,XML-Pull解析常用于网络数据的解析,因为它高效且内存友好。 首先,我们需要了解如何使用XML-Pull解析API。在Java中,我们可以使用`org.xmlpull.v1.XmlPullParserFactory`来创建一个解析器实例,...
本文将深入探讨如何使用SAX、DOM和Pull解析器解析XML文件,以及如何生成XML文件。我们将同时展示Java和Kotlin两种语言的实现方法。 一、SAX解析XML文件 SAX(Simple API for XML)是一种事件驱动的解析器,它不会一...
本篇将详细探讨Android中的XML解析,特别是PULL解析方式,并讲解如何进行XML的写入操作。 ### 1. Android XML解析概述 XML解析器分为两种主要类型:DOM(Document Object Model)和PULL(Pull Parser)。DOM解析器...
本实例——“xml航班解析实例”,提供了一个全项目的压缩包,包含了源代码和注释,方便个人学习和理解XML解析在安卓应用中的具体应用。 在安卓应用中,XML解析主要分为两种方式:DOM(Document Object Model)解析...
php解析xml实例php解析xml实例php解析xml实例php解析xml实例php解析xml实例php解析xml实例php解析xml实例php解析xml实例php解析xml实例php解析xml实例php解析xml实例php解析xml实例
总结起来,Android中的XML解析是一个重要的任务,SAX解析器提供了一种高效且节省内存的方式处理XML数据。通过创建一个事件处理器并重写其方法,我们可以根据需要定制解析过程,轻松地提取XML文件中的标签和数据。在...
本项目主要探讨如何在Android中通过Pull解析器来生成XML文档,这是一种高效、轻量级的解析XML的方式,特别适合在内存有限的移动设备上使用。 首先,我们来理解什么是Pull解析器。在Android中,XMLPullParser是...
总结,Android的Pull解析器提供了一种高效、轻量级的方式处理XML文档,无论是解析还是生成,都具有较高的灵活性和性能优势。在实际开发中,可以根据具体需求选择合适的解析策略,以优化应用的性能和资源使用。