android pull 文件,android Pull方式解析xml文件

xml文件如下:

zhangsan

11

lisi

18

wangwu

20

解析代码如下:

package com.pdsu.file.xml;

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.XmlPullParserException;

import org.xmlpull.v1.XmlPullParserFactory;

import org.xmlpull.v1.XmlSerializer;

import android.util.Xml;

/**

* 采用pull方式解析xml文件

*

* @author huangyinge

*

*/

public class PersonXML {

/**

* 读取xml文件

*

* @param is

* xml文件输入流

* @return person列表

* @throws XmlPullParserException

*/

public List readXML(InputStream is) throws Exception {

List persons = null;

Person person = null;

// 得到xmlpull解析器

XmlPullParser xmlPull =XmlPullParserFactory.newInstance().newPullParser();

xmlPull.setInput(is, "UTF-8");

int eventType = xmlPull.getEventType();

// 循环遍历每个元素只到文档末尾

while (eventType != XmlPullParser.END_DOCUMENT) {

switch (eventType) {

case XmlPullParser.START_DOCUMENT:// 文档开始,只执行一次

persons = new ArrayList();

break;

case XmlPullParser.START_TAG: {// 标签开始

if ("person".equals(xmlPull.getName())) {

int id = Integer.parseInt(xmlPull.getAttributeValue(0));

person = new Person();

person.setId(id);

}

if ("name".equals(xmlPull.getName())) {

String name = xmlPull.nextText();

person.setName(name);

}

if ("age".equals(xmlPull.getName())) {

int age = Integer.parseInt(xmlPull.nextText());

person.setAge(age);

}

break;

}

case XmlPullParser.END_TAG: {

if ("person".equals(xmlPull.getName())) {

persons.add(person);

person =null;

}

break;

}

}

eventType = xmlPull.next();

}

return persons;

}

/**

* 保存xml文件

* @param persons

* @throws Exception

*/

public void saveXML(List persons,OutputStream os) throws Exception{

XmlSerializer xmlSerializer = XmlPullParserFactory.newInstance().newSerializer();

xmlSerializer.setOutput(os,"UTF-8");

xmlSerializer.startDocument("UTF-8", true);

xmlSerializer.startTag(null, "persons");

for(Person person:persons){

xmlSerializer.startTag(null, "person");

xmlSerializer.attribute(null, "id", String.valueOf(person.getId()));

xmlSerializer.startTag(null, "name");

xmlSerializer.text(person.getName());

xmlSerializer.endTag(null, "name");

xmlSerializer.startTag(null, "age");

xmlSerializer.text(String.valueOf(person.getAge()));

xmlSerializer.endTag(null, "age");

xmlSerializer.endTag(null, "person");

}

xmlSerializer.endTag(null, "persons");

xmlSerializer.endDocument();

os.flush();

os.close();

}

}测试类代码:

package com.pdsu.file.xml;

import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.InputStream;

import java.util.ArrayList;

import java.util.List;

import org.junit.Test;

import android.test.AndroidTestCase;

import com.pdsu.file.xml.Person;

import com.pdsu.file.xml.PersonXML;

public class PersonXMLTest extends AndroidTestCase{

@Test

public void testReadXML() throws Exception{

InputStream is = this.getClass().getClassLoader().getResourceAsStream("person.xml");

PersonXML personXml = new PersonXML();

List persons = personXml.readXML(is);

for(Person person :persons){

System.out.println(person);

}

}

@Test

public void save() throws Exception{

List persons = new ArrayList();

persons.add(new Person(1,"name1",11));

persons.add(new Person(2,"name2",112));

persons.add(new Person(3,"name3",113));

persons.add(new Person(4,"name4",114));

PersonXML personXml = new PersonXML();

FileOutputStream fos = new FileOutputStream(getContext().getFilesDir()+File.separator+"person.xml");

personXml.saveXML(persons, fos);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值