`

pull读取xml--android

阅读更多

pull解析xml文件,和sax和dom一样 都可以脱离android单独使用,pull和sax的原理一样,不一样的地方是pull读取xml文件后调用方法返回的是数字,
   读取到xml的声明返回数字0 START_DOCUMENT;
   读取到xml的结束返回数字1 END_DOCUMENT ;
   读取到xml的开始标签返回数字2 START_TAG
   读取到xml的结束标签返回数字3 END_TAG
   读取到xml的文本返回数字4 TEXT

   pull是开源的项目 源码下载地址http://www.xmlpull.org/
  service中的代码

Java代码
  1. package com.leequer.Service;   
  2.   
  3. import java.io.InputStream;   
  4. import java.util.ArrayList;   
  5. import java.util.List;   
  6.   
  7.   
  8. import org.xmlpull.v1.XmlPullParser;   
  9.   
  10. import android.util.Xml;   
  11.   
  12. import com.leequer.Doem.Person;   
  13. /**  
  14.  * 使用pull解析xml  
  15.  * 2010-04-26  
  16.  * @author leequer  
  17.  *  
  18.  */  
  19. public class ReadXmlByPullService {   
  20.        
  21.     public static List<Person> ReadXmlByPull (InputStream inputStream)throws Exception   
  22.     {   
  23.         List <Person> personList = null;   
  24.         /**  
  25.          * android给我们提供了xml 用来得到xmlpull解析器  
  26.          */  
  27.         XmlPullParser xmlpull = Xml.newPullParser();   
  28.         /**  
  29.          * 将输入流传入 设定编码方式  
  30.          *   
  31.          */  
  32.         xmlpull.setInput(inputStream, "utf-8");   
  33.         /**  
  34.          * pull读到xml后 返回数字  
  35.          *     读取到xml的声明返回数字0 START_DOCUMENT;  
  36.                读取到xml的结束返回数字1 END_DOCUMENT ;  
  37.                读取到xml的开始标签返回数字2 START_TAG  
  38.                读取到xml的结束标签返回数字3 END_TAG  
  39.                读取到xml的文本返回数字4 TEXT  
  40.          */  
  41.         int eventCode = xmlpull.getEventType();   
  42.         /**  
  43.          * 只要这个事件返回的不是1 我们就一直读取xml文件  
  44.          */  
  45.         Person person = null;   
  46.         while(eventCode!=XmlPullParser.END_DOCUMENT)   
  47.         {   
  48.                
  49.             switch (eventCode)   
  50.             {   
  51.                 case XmlPullParser.START_DOCUMENT:   
  52.                 {//开始文档 new数组   
  53.                     personList =new  ArrayList<Person>();   
  54.                     break;   
  55.                 }   
  56.                 case XmlPullParser.START_TAG:   
  57.                 {   
  58.                     if("person".equals(xmlpull.getName()))   
  59.                     {   
  60.                         person =  new Person();   
  61.                         person.setId(xmlpull.getAttributeValue(0));   
  62.                     }else if (person!=null)   
  63.                     {   
  64.                         if(("name".equals(xmlpull.getName())))   
  65.                         {   
  66.                             /**  
  67.                              * 如果当前元素的下一个元素是文本节点 就可以直接用nextText()这个方法来得到文本节点的内容  
  68.                              */  
  69.                             person.setName(xmlpull.nextText());   
  70.                         }else if ("age".equals(xmlpull.getName()))   
  71.                         {   
  72.                             /**  
  73.                              * 如果当前元素的下一个元素是文本节点 就可以直接用nextText()这个方法来得到文本节点的内容  
  74.                              */  
  75.                             person.setAge(xmlpull.nextText());   
  76.                         }   
  77.                     }   
  78.                     break;   
  79.                 }   
  80.                        
  81.                 case XmlPullParser.END_TAG:   
  82.                 {    
  83.                     if("person".equals(xmlpull.getName())&&person!=null)   
  84.                     {   
  85.                         personList.add(person);   
  86.                         person = null;   
  87.                     }   
  88.                     break;   
  89.                 }   
  90.             }   
  91.                
  92.             eventCode = xmlpull.next();//没有结束xml文件就推到下个进行解析   
  93.                
  94.                
  95.         }   
  96.            
  97.         return personList;   
  98.     }   
  99. }  

<!--EndFragment-->

 

利用pull创建xml文件

public static void writeXml(List<Person> persons, Writer writer) throws Exception{
  XmlSerializer serializer = Xml.newSerializer();
  serializer.setOutput(writer);
  serializer.startDocument("UTF-8", true);//<?xml version="1.0" encoding="UTF-8"?>
  serializer.startTag(null, "persons");
  for(Person person : persons){
   serializer.startTag(null, "person");   
   serializer.attribute(null, "id", String.valueOf(person.getId()));
   
   serializer.startTag(null, "name");
   serializer.text(person.getName());
   serializer.endTag(null, "name");
   
   serializer.startTag(null, "age");
   serializer.text(String.valueOf(person.getAge()));
   serializer.endTag(null, "age"); 
   
   serializer.endTag(null, "person");
  }
  serializer.endTag(null, "persons");
  serializer.endDocument();
  writer.flush();
  writer.close();  
 }

 

 

写入xml文件测试

StringWriter writer = new StringWriter();
  List<Person> persons = new ArrayList<Person>();
  persons.add(new Person(12, "李明", new Short((short)36)));
  persons.add(new Person(78, "老张", new Short((short)26)));
  persons.add(new Person(90, "老毕", new Short((short)16)));
  PullPersonService.writeXml(persons, writer);
  Log.i(TAG, writer.toString());

分享到:
评论

相关推荐

    android使用pull 解析xml文件源码

    pull解析xml文件,和sax和dom一样 都可以脱离android单独使用,pull和sax的原理一样,不一样的地方是pull读取xml文件后调用方法返回的是数字, 读取到xml的声明返回数字0 START_DOCUMENT; 读取到xml的结束返回数字1 ...

    Android应用源码之28.使用DOM和pull解析XML-IT计算机-毕业设计.zip

    在进行毕业设计时,通过这样的源码学习,你可以深入了解XML解析在Android应用中的实际应用,包括如何创建解析器、如何读取和处理XML节点,以及如何在实际项目中优化解析性能。同时,这也会帮助你更好地理解Android的...

    android xml pull解析示例

    在Android系统中,XML Pull解析是一种轻量级且高效的解析XML文档的方法,它允许应用程序按需读取XML文档的节点,而无需加载整个文档到内存中。以下是关于Android XML Pull解析的详细知识讲解。 1. **XML Pull解析器...

    Android利用pull生成xml文件

    "Android利用Pull生成XML文件"这一主题涉及到的是如何使用Android的Pull解析器来读取和生成XML内容。Pull解析器是一种轻量级、低级别的解析机制,与DOM(文档对象模型)和SAX(简单API for XML)解析器相比,它更...

    android之Pull解析XML文件

    本文将深入探讨如何在Android中使用Pull解析器来处理XML文件,这是一种高效且节省资源的方式。 Pull解析器是Android提供的一个API,它允许应用程序通过事件驱动的方式解析XML文档。与SAX解析器类似,Pull解析器不...

    android中使用PULL解析XML

    本文将深入探讨如何在Android中使用PULL解析器(Pull Parser)来解析XML文档,这是一种轻量级且高效的解析方式。 **PULL解析器概述** PULL解析器(Pull Parsing)是一种事件驱动的解析模型,它不需要完整的XML文档...

    Android中,使用SAX和PULL解析天气预报XML

    PULL解析器同样逐行读取XML,但开发者需要主动调用next方法前进到下一个事件。这种方式易于理解和实现,适合简单的XML结构。在解析天气预报XML时,我们首先需要创建PullParser对象,然后通过nextTag()方法遍历XML,...

    google天气预报XML-Pull解析版(完全解析)

    XML-Pull解析器在读取XML文档时,只处理当前的事件,这样可以节省内存,尤其适合处理大型XML文件。在Android开发中,XML-Pull解析常用于网络数据的解析,因为它高效且内存友好。 首先,我们需要了解如何使用XML-...

    android使用pull生成xml

    在Android中,XMLPullParser是Android SDK提供的一种解析XML的API,它采用拉(Pull)模式,允许开发者按需读取XML文档的下一个事件,而不是一次性加载整个文档到内存。这种方式节省了内存,提高了性能。要使用...

    android pull解析xml源码

    Pull解析器是一种事件驱动的解析方法,与DOM(Document Object Model)和SAX(Simple API for XML)不同,它不需要将整个XML文档加载到内存中,而是通过读取XML流并触发相应的事件来进行解析,从而节省资源,尤其...

    Android PULL解析XML

    PULL解析器在读取XML时,会触发一系列的事件,开发者可以注册监听这些事件并进行相应的处理。 要实现PULL解析XML,首先需要创建一个`XmlPullParserFactory`工厂对象,然后用它创建`XmlPullParser`解析器实例。接着...

    Android 采用pull生成XML数据

    在Android应用开发中,解析XML数据是常见的需求,例如从网络服务获取数据或者读取本地资源文件。本篇文章将深入探讨如何在Android中使用Pull解析器生成XML数据。 Pull解析器是一种轻量级的解析方式,相比DOM...

    Android ReadXmlByPull 使用Pull解析Xml文件-IT计算机-毕业设计.zip

    本文将深入探讨如何在Android中使用Pull解析器读取XML文件,并结合提供的源码Demo进行分析。 首先,让我们理解什么是XML Pull解析。XML Pull解析是一种轻量级的解析方式,它允许开发者顺序地读取XML文档,就像遍历...

    android Pull XML文件解析 存取 代码程序

    例如,从assets读取XML: ```java AssetManager assets = getAssets(); InputStream in = assets.open("data.xml"); parser.setInput(in, null); ``` 或从raw资源读取: ```java Resources res = getResources(); ...

    Pull解析xml源码导入即可用

    本文将深入探讨Android中的Pull解析XML技术,以及如何利用模板快速实现XML的解析。 首先,理解XML Pull解析器的工作原理是至关重要的。在Android中,XML Pull解析是一种轻量级处理XML文档的方式,它允许应用移动...

    Android 封装pull解析xml

    而SAX解析采用事件驱动模型,逐行读取XML,适用于处理大型XML文件。本文将重点介绍SAX解析的一种实现方式——Pull解析。 Pull解析器(XMLPullParser)是Android SDK提供的一种轻量级、高效的XML解析方式,它不需要...

    android SAX PULL 解析XML文件 代码 详解

    总之,Android提供了SAX和PULL两种解析XML的手段,开发者可以根据具体情况灵活选择。在内存有限或者需要高效处理大量XML数据的情况下,SAX可能是更好的选择;而在追求简洁代码和快速开发的场合,PULL解析则更为便捷...

    Android ReadXmlByPull 使用Pull解析Xml文件.rar

    本教程将详细介绍如何在Android中利用Pull解析器(PullParser)来读取XML文件,这是一种高效且内存友好的方式。 首先,让我们了解什么是Pull解析器。Pull解析器是一种事件驱动的解析模型,它不创建整个XML文档树,...

    android开发之xml文件操作——xml创建和pull解析xml

    而Pull解析器是SAX解析器的一种简化版本,它提供了一种更简单的API,开发者可以按照需要向前移动解析器,按需读取XML数据,降低了内存占用,且易于使用。 Android中的Pull解析器(`org.xmlpull.v1.XmlPullParser`)...

Global site tag (gtag.js) - Google Analytics