`
不夜的星辰
  • 浏览: 88326 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

android pull解析xml

阅读更多
除了可以使用 SAX和DOM解析XML文件,大家也可以使用Android内置的Pull解析器解析XML文件。 Pull解析器的运行方式与 SAX 解析器相似。它提供了类似的事件,如:开始元素和结束元素事件,使用parser.next()可以进入下一个元素并触发相应事件。事件将作为数值代码被发送,因此可以使用一个switch对感兴趣的事件进行处理。当元素开始解析时,调用parser.nextText()方法可以获取下一个Text类型节点的值。


public class PullService {
public static List<Person> readXML(InputStream inputStream) throws IOException{
    XmlPullParser parser = Xml.newPullParser();
    try {
    parser.setInput(inputStream, "UTF-8");
    int eventType = parser.getEventType();
  
    Person currentPerson = null;
    List<Person> persons = null;
    while (eventType != XmlPullParser.END_DOCUMENT) {
     switch (eventType) {
    case XmlPullParser.START_DOCUMENT://文档开始事件,可以进行数据初始化处理
      persons = new ArrayList<Person>();
      break;
    case XmlPullParser.START_TAG://开始元素事件
      String name = parser.getName();
      if (name.equalsIgnoreCase("person")) {
       currentPerson = new Person();
       currentPerson.setId(new Integer(parser.getAttributeValue(null, "id")));
      } else if (currentPerson != null) {
       if (name.equalsIgnoreCase("name")) {
        currentPerson.setName(parser.nextText());// 如果后面是Text节点,即返回它的值
       } else if (name.equalsIgnoreCase("age")) {
        currentPerson.setAge(new Short(parser.nextText()));
       }
      }
      break;
    case XmlPullParser.END_TAG://结束元素事件
      if (parser.getName().equalsIgnoreCase("person") && currentPerson != null) {
       persons.add(currentPerson);
       currentPerson = null;
      }
      break;
     }
     eventType = parser.next();
    }
    inputStream.close();
    return persons;
    } catch (Exception e) {
     e.printStackTrace();
    }
    return null;
   }

//将内容保存至XML文件
public static String writeXML(List<Person> persons, Writer writer){
     XmlSerializer serializer = Xml.newSerializer();
     try {
         serializer.setOutput(writer);
         serializer.startDocument("UTF-8", true);
       //第一个参数为命名空间,如果不使用命名空间,可以设置为null
         serializer.startTag("", "persons");
         for (Person person : persons){
             serializer.startTag("", "person");
             serializer.attribute("", "id", person.getId().toString());
             serializer.startTag("", "name");
             serializer.text(person.getName());
             serializer.endTag("", "name");
             serializer.startTag("", "age");
             serializer.text(person.getAge().toString());
             serializer.endTag("", "age");
             serializer.endTag("", "person");
         }
         serializer.endTag("", "persons");
         serializer.endDocument();
         return writer.toString();
     } catch (Exception e) {
         e.printStackTrace();
     }
     return null;
}


}

生成的person.xml如下:

<?xml version="1.0" encoding="UTF-8"?>
<persons>
<person id="23">
   <name>liming</name>
   <age>30</age>
</person>
<person id="20">
   <name>lili</name>
   <age>25</age>
</person>
</persons>

注:此文为转载
分享到:
评论

相关推荐

    android pull解析xml源码

    "Android pull解析xml源码"这个主题聚焦于使用Android的XML Pull解析器来理解和操作XML文档。Pull解析器是一种事件驱动的解析方法,与DOM(Document Object Model)和SAX(Simple API for XML)不同,它不需要将整个...

    Android PULL解析XML

    总结,本教程介绍了如何在Android中使用PULL解析XML,以及如何结合ButterKnife进行视图绑定。PULL解析提供了高效且内存友好的方式处理XML数据,而ButterKnife则简化了UI组件的管理,两者结合能有效提升开发效率。...

    android之Pull解析XML文件

    总结,Android的Pull解析XML文件是一种高效、节省资源的解析方式,适用于网络通信中的数据交换。通过创建Pull解析器实例,监听XML事件,以及适当优化,开发者可以轻松处理XML数据,实现更流畅的用户体验。在实际开发...

    android中使用PULL解析XML

    **使用PULL解析XML的步骤** 1. **引入库** 首先,在Android项目中,我们需要引入`xmlpull.org`的库,这个库已经被包含在Android SDK中,无需额外下载。在代码中,我们可以通过以下方式获取到PULL解析器: ```java ...

    Android Pull 解析 XML.doc

    【Android Pull解析XML】 在Android开发中,处理XML数据时,常常会用到两种轻量级的解析方式:SAX解析和Pull解析。本篇主要介绍Android中的Pull解析XML,这是一种事件驱动的解析方式,允许应用程序按需读取XML文档...

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

    该文章详细介绍了在Android环境下如何使用SAX和PULL解析XML,包括代码示例和步骤说明,对于初学者来说非常有帮助。 最后,压缩包中的"Weather"文件很可能是示例的天气预报XML数据。通过实际解析这个文件,你可以更...

    android xml pull解析示例

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

    使用Android自带的XML解析器PULL解析器简单的解析xml

    Android系统提供了一种轻量级的XML解析方式——PULL解析器(Pull Parser),它适用于处理大型XML文档,因为它不需要像DOM解析器那样一次性加载整个XML文档到内存中。PULL解析器通过事件驱动的方式,按需解析XML文档...

    Pull解析xml源码导入即可用

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

    android使用pull 解析xml文件源码

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

    xml PULL解析的一个小例子

    在Android开发中,由于其轻量级和高效的特点,XML Pull解析器成为处理XML文档的一种常见方法。本DEMO主要展示了如何在Android项目中使用XML Pull解析技术。 XML Pull解析器的工作方式是基于事件驱动的,它会读取XML...

    在android中使用pull解析xml文件

    本文将深入探讨如何在Android中使用Pull解析器解析XML文件。 一、XML Pull解析器简介 XML Pull解析器(XML Pull API)是一种基于事件驱动的解析模型,它不需预先加载整个XML文档,而是逐行读取,当遇到特定的XML...

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

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

    Android 封装pull解析xml

    以下是一些关于封装Pull解析XML的关键知识点: 1. **创建XMLPullParser实例**: Android系统提供了`XmlPullParserFactory`类,通过`newInstance()`方法创建XMLPullParser的工厂对象,然后使用`newPullParser()`...

    pull解析xml文件

    pull解析xml文件

    Android 生成和PULL解析xml

    本文将深入探讨如何在Android中生成XML文件以及如何使用PULL解析器来解析XML数据。 首先,我们来看一下如何在Android中生成XML文件。生成XML文件通常涉及创建一个XMLWriter对象,然后通过调用其方法来添加元素、...

    Pull解析xml Android

    "Pull解析xml Android"这个主题聚焦于Android平台下使用Pull解析器处理XML数据的方法。 Pull解析(XMLPullParser)是Android提供的一种轻量级、低内存消耗的XML解析方式。它不同于DOM解析器(将整个XML文档加载到...

    Android利用pull生成xml文件

    总的来说,Android的Pull解析器不仅用于解析XML,还能用于生成XML文件,这在某些场景下非常有用,例如自定义数据格式的存储或网络通信中的数据序列化。通过Pull解析器生成XML,开发者可以精确地控制XML的结构和内容...

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

    综上所述,Android中的Pull解析器提供了一种高效、低内存消耗的解析XML的方式。通过创建解析器、设置输入源、处理事件以及异常处理,开发者可以轻松地读取和解析XML文件。在实际应用中,可以根据具体需求调整解析...

    Pull 解析xml

    "Pull解析XML"是Android系统中处理XML文档的一种高效方法,相较于DOM(Document Object Model)和SAX(Simple API for XML),Pull解析器在内存占用和性能上有显著优势,尤其适合于移动设备资源有限的环境。...

Global site tag (gtag.js) - Google Analytics