android开发 - pull解析器
来源:互联网 发布:免手机号注册qq 知乎 编辑:程序博客网 时间:2024/05/26 07:30
使用SAX或者DOM或者pull解析XML文件
在Android平台上可以使用Simple API for XML(SAX)、Document Object Model(DOM)
除了可以使用SAX或DOM解析XML文件之外,大家也可以使用Android内置的pull解析器XML文件,Pull解析器是一个开源的Java项目,即可以用于Android
android集成了pull解析器
XML节点
根节点 Node Type
Element Node
Text Node
首页我们创建一个Person类,里面有age,name的属性和字段
//以下为解析XML
public List<Person> getPersons(InputStrea xml) throws Exception{
List<Person> persons=null;
Person person = null;
XmlPullParser pullParser = Xml.newPullParser();
//为pull解析器设置要解析的XML数据
pullParser.setInput(xml,"utf-8");
int event = pullParser.getEventType();
while(event != XmlPullParser.END_DOCUMENT){
switch(event){
case XmlPullParser.START_DOCUMENT:
persons = new ArrayList<Person>();
break;
case XmlPullParser.START_TAG:
if("person".equals(pullParser.getName())){
int id = new Integer(pullParser.getAttributeValue(0));
person = new Person();
person.setId(Id);
}
if("name".equals(pullParser.getName()))
{
String name = pullParser.nextText();
person.setName(name);
}
if("age".equals(pullParser.getName())){
int age = new Integer(pullParser.nextText());
person.setAge(age);
}
break;
case XmlPullParser.END_TAG:
if("person".equals(pullParser.getName())){
persons.add(person);
person = null;
}
break;
}
}
event = pullParser.next();
return persons;
}
//以下为读取XML内容
private static final String TAG = "PersonServiceTest";
public void testPersons() throws Exception{
InputStream xml = this.getClass().getClassLoader().getResourceAsStream("person.xml");
List<Person> persons = PersonService.getPersons(xml);
for(Person person : persons)
{
Log.i(TAG,person.toString());
}
}
使用pull解析器,向xml插入数据
public static void save(List<Person> persons ,OutputStream out) throws Exception{
XmlSerializer serializer = Xml.newSerializer();
serializer.setOutput(out,"UTF-8");
serializer.startDocument("UTF-8",true); //开始文档
serializer.starTag(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().toString());
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(); //结束文档
out.flush();
out.close();
}
单元测试
public void testSave() throws Exception{
List<Person> persons = new ArrayList<Person>();
persons.add(new Person(43,"zhangxx",80));
persons.add(new Person(12,"lili",20));
persons.add(new Person(78,"xiaoxiao",8));
File xmlFile = new File(getContext().getFilesDir(),"itcast.xml");
FileOutputStream outStream = new FileOutputStream(xmlFile);
PersonService.save(persons,outStream);
}
0 0
- android开发 - pull解析器
- android pull解析器
- Android 开发 pull解析器解析xml文件
- Android XML解析器 - PUll
- Android开发之Pull解析XML文件
- Android XML解析(Pull解析器)
- android 解析XML pull解析器
- android pull解析器解析xml
- android利用pull解析器解析xml
- Pull解析器解析xml(Android)
- Android开发入门之采用Pull解析器解析和生成XML内容
- Android开发系列(八):采用Pull解析器解析和生成XML内容
- Android开发:XML解析与DOM、SAX、PULL解析对比
- Android利用pull解析器生成xml
- <Android 初步> XML------PULL解析器
- android xml pull 的解析器
- Android pull解析
- Android Pull解析xml
- c++实现链栈
- POJ 1426 Find The Multiple(BFS 同余模定理)
- 用动态规划解决二叉查找树
- 整数拆分问题的四种解法
- c++中的 单例模式(singleton)和双检测锁(Double-Checked Locking)
- android开发 - pull解析器
- NYOJ---题目1172unlucky number
- Http协议与TCP协议简单理解
- UVa 116 - Unidirectional TSP
- Board Wrapping
- 算法——素数环
- 虚拟机扩展磁盘空间
- Android探究之View.isInEditMode()报错
- IT各个层次角色与职责