import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlSerializer;
import android.util.Xml;
import cn.itcast.domain.Person;
/**
* 采用Pull解析器完成XML内容的解析
*/
public class PullPersonService {
/**
* 生成XML内容
* @param outStream xml内容的输出方向
* @param persons
* @throws Exception
*/
public static void save(OutputStream outStream, List<Person> persons) throws Exception{
XmlSerializer serializer = Xml.newSerializer();
serializer.setOutput(outStream, "UTF-8");
serializer.startDocument("UTF-8", true);
serializer.startTag(null, "persons");
for(Person person : persons){
serializer.startTag(null, "person");
serializer.attribute(null, "id", person.getId().toString());
serializer.startTag(null, "name");
serializer.text(person.getName());
serializer.endTag(null, "name");
serializer.startTag(null, "age");
serializer.text(person.getAge().toString());
serializer.endTag(null, "age");
serializer.endTag(null, "person");
}
serializer.endTag(null, "persons");
serializer.endDocument();
outStream.flush();
outStream.close();
}
public static List<Person> getPersons(InputStream inputStream) throws Exception{
List<Person> persons = null;
Person person = null;
XmlPullParser parser = Xml.newPullParser();
parser.setInput(inputStream, "UTF-8");
int event = parser.getEventType();//产生第一个事件
while(event!=XmlPullParser.END_DOCUMENT){
switch (event) {
case XmlPullParser.START_DOCUMENT:
persons = new ArrayList<Person>();
break;
case XmlPullParser.START_TAG:
if("person".equals(parser.getName())){
person = new Person();
person.setId(new Integer(parser.getAttributeValue(0)));
}
if(person!=null){
if("name".equals(parser.getName())){
person.setName(parser.nextText());
}else if("age".equals(parser.getName())){
person.setAge(new Short(parser.nextText()));
}
}
break;
case XmlPullParser.END_TAG:
if("person".equals(parser.getName())){
persons.add(person);
person = null;
}
break;
}
event = parser.next();//进入下一个元素并触发相应事件
}
return persons;
}
}
分享到:
相关推荐
在Android平台上基于Pull方式对XML文件进行解析
Android Pull 解析 XML
实现pull方式解析xml文件,xml文件放置在assets文件夹,View绑定使用butterknife
Android网络编程之Pull解析XML文件~
在android平台下使用PULL解析XML源码。
在Android中,使用SAX和PULL解析XML,本项目中以解析天气预报为例。 详情见博客:http://blog.csdn.net/yalin18/article/details/7437752
使用Android自带的XML解析器PULL解析器简单的解析xml,并将内容显示在TestView上,代码简化过。
android xml pull解析示例,自己mark下,备忘
Android Pull解析xml文件.
pull解析xml文件,和sax和dom一样 都可以脱离android单独使用,pull和sax的原理一样,不一样的地方是pull读取xml文件后调用方法返回的是数字, 读取到xml的声明返回数字0 START_DOCUMENT; 读取到xml的结束返回数字1 ...
Android 封装pull解析xml,可直接调用
在android中使用pull解析xml文件
pull解析xml文件
Android ReadXmlByPull 使用Pull解析Xml文件.rar
使用pull解析xml 模板已经写好 只需导入即可用,将里面的解析类导入到其他工程也可用,不必麻烦在写了
android项目的一个pull解析的小DEMO
Android 生成和PULL解析xml,生成的例子和PULL解析的例子,很详细。。
分别实现了android 最常用的SAX和PULL解析方式,并附有详尽分析
Android之PULL解析XML
XML解析有三种方式 1,DOM 通用性强,它会将XML文件的所有内容读取到内存中,然后使用DOM API遍历XML树、检索所需的数据;...Android自带的XML解析器,和SAX基本类似,也是事件驱动,不同的是PULL事件返回的是数值型