`
teachertina
  • 浏览: 12351 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

xml解析-续-之Pull

    博客分类:
  • xml
 
阅读更多

/**
* 采用pull解析xml内容
* 建议平时使用pull 解析器解析xml 文档,容易理解

* @author Administrator
*
*/

 

/**
* 获取员工信息
* @param xmlInputStream
* @return
* @throws Exception
*/
public static List<Person> getPerson(InputStream xmlInputStream)throws Exception{
List<Person> persoList =null;
Person person =null;

 XmlPullParser parser= Xml.newPullParser();   

 

parser.setInput(xmlInputStream,"UTF-8"); //设置,解析

setInput(xml,encoding);
int event = parser.getEventType(); //将会解析xml 文件第一段字符
//pull解析器不能主动的自我解析,需要手动调用next()解析方法,进行解析
while (event!= XmlPullParser.END_DOCUMENT) { //如果不是文档末尾,就一直进行解析(不是结束文档事件)
switch (event) {
case XmlPullParser.START_DOCUMENT: //开始文档事件
persoList = new ArrayList<Person>();
break;
case XmlPullParser.START_TAG: //开始元素事件处理
if ("person".equals(parser.getName())) {
//get attribute
int id= new Integer(parser.getAttributeValue(0));
person =new Person();
person.setId(id);
}
if (person!=null) {
if ("name".equals(parser.getName())) {
//get attribute
person.setName(parser.nextText()); //获取开始节点下面的文本节点的值
}
if ("age".equals(parser.getName())) {
//get attribute
int age= new Integer(parser.nextText());
person.setAge(age);
}
}

break;
case XmlPullParser.END_TAG: //结束元素事件
if ("person".equals(parser.getName())) {
persoList.add(person);
person = null;
}
break;

}
event =parser.next(); //调用next方法,进行下一步
}
return persoList;
}

 

 

/**
* 生成xml
* @param list
* @param outputStream
* @throws Exception
*/
public static void save(List<Person> list,OutputStream outputStream)throws Exception{
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
XmlSerializer serializer = factory.newSerializer();//获取序列化对象
serializer.setOutput(outputStream,"utf-8"); //设置输出方向
serializer.startDocument("utf-8",true); //设置xml 文件的编码,和xml文件是否可以独立存在
serializer.startTag(null,"persons"); //设置开始标签(命名空间设置为null,persons)
for(Person person: list){
serializer.startTag(null,"person"); //kaishi 设置,开始生成person 节点
serializer.attribute(null,"id",person.getId()+""); //设置节点属性
//设置子节点
serializer.startTag(null,"name");
serializer.text(person.getName());
serializer.endTag(null,"name");
//设置子节点
serializer.startTag(null,"age");
serializer.text(person.getAge()+"");
serializer.endTag(null,"age");

serializer.endTag(null,"person");
}

serializer.endTag(null,"persons");//设置结束标签又开始就有结束嘛
serializer.endDocument(); //结束文档
}

分享到:
评论

相关推荐

    android xml pull解析示例

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

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

    这个过程涉及网络请求、XML解析、数据模型的设计以及异常处理等多个方面的知识,是Android开发中常见的数据处理任务。理解并掌握这些技能对于任何希望构建涉及网络数据交换的移动应用开发者来说都是至关重要的。

    Android解析xml(3)---Pull解析

    在Android中,XML解析主要有三种方式:DOM解析、SAX解析和Pull解析。DOM解析会将整个XML文件加载到内存,形成一个树形结构,适合小规模的XML文件;SAX解析是基于事件的,逐行读取,不会占用太多内存,但编程相对复杂...

    pull-parser-2.jar 工具類

    《pull-parser-2.jar工具类:Android开发中的XML与JSON解析利器》 在移动应用开发领域,尤其是在Android平台上,高效地处理XML和JSON数据是必不可少的技能。`pull-parser-2.jar`工具类库就是这样一个专门针对XML和...

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

    本文将深入探讨如何在Android中使用两种常见的XML解析技术——SAX(Simple API for XML)和PULL(Pull Parser)来解析天气预报的XML数据。这两种方法各有优缺点,适用于不同的场景。 首先,我们来看SAX解析器。SAX...

    使用Pull解析器读取XML文件和生成XML文件

    本篇文章将深入探讨如何使用Pull解析器来读取XML文件,以及如何生成XML文件。Pull解析器是一种轻量级的解析方式,它允许程序在解析XML时按需获取数据,而不需要一次性加载整个文档到内存,从而提高了效率和资源利用...

    Pull解析xml源码导入即可用

    这个模板可能包含了实现`XmlPullParser`接口的类,封装了XML解析的核心逻辑,如事件处理(如开始标签、结束标签、文本等)、解析错误处理等。用户只需将这个模板导入到自己的项目中,就可以快速地进行XML数据的读取...

    android之Pull解析XML文件

    - 使用异步任务处理XML解析,避免阻塞主线程。 总结,Android的Pull解析XML文件是一种高效、节省资源的解析方式,适用于网络通信中的数据交换。通过创建Pull解析器实例,监听XML事件,以及适当优化,开发者可以...

    android 安卓xml pull解析

    在Android系统中,XML解析主要有两种方式:DOM解析和PULL解析。本文将深入探讨Android中的XML Pull解析,包括基本概念、使用方法以及本地和网络XML数据的处理。 一、XML Pull解析基础 XML Pull解析是一种事件驱动...

    pull解析器通用解析XML与生成XML

    可能会介绍一些辅助工具或库,比如使用IDE的插件来调试XML Pull解析,或者利用某些工具分析XML解析性能。 5. **压缩包子文件的文件名称列表:“pullxml”**: 这可能是一个示例程序或测试数据集,用于演示XML ...

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

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

    PULL解析xml的demo

    XML解析有三种方式 1,DOM 通用性强,它会将XML文件的所有内容读取到内存中,然后使用DOM API遍历XML树、检索所需的数据;...Android自带的XML解析器,和SAX基本类似,也是事件驱动,不同的是PULL事件返回的是数值型

    android中使用PULL解析XML

    在Android中,有两种主要的XML解析方式:DOM解析和SAX解析。DOM解析会将整个XML文档加载到内存中形成一棵DOM树,方便后续查询但消耗较多资源;而SAX解析是事件驱动的,逐行读取,不会加载整个文档,节省内存但操作...

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

    `ReadXmlByPull`是一个常见的编程任务,它涉及到Android中的XML解析技术,特别是使用Pull解析器来处理XML数据。本文将深入探讨如何在Android中使用Pull解析器读取XML文件,并结合提供的源码Demo进行分析。 首先,让...

    使用Pull解析xml文件

    本篇文章将详细探讨PULL解析器,它是Android平台特有的一种轻量级、事件驱动的XML解析方法。 1. **PULL解析器介绍** PULL解析器是Android SDK中内置的一种解析XML的机制,特别适合于资源有限的移动设备。它通过...

    android使用pull 解析xml文件源码

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

    pull解析xml文件

    pull解析xml文件

    xml PULL解析的一个小例子

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

    用pullXML解析本地数据并存在本地

    PullXML解析器是Android系统提供的一种轻量级的XML解析方法,它适用于处理大量的XML数据,特别是当内存有限或需要高效处理流式数据时。本文将深入探讨如何使用PullXML解析本地XML数据,并将解析后的数据存回本地。 ...

    Pull 解析xml

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

Global site tag (gtag.js) - Google Analytics