java pull 修改 xml_Android中使用pull解析器操作xml文件的解决办法

package com.ljq.service;

import java.io.InputStream;

import java.io.Writer;

import java.util.ArrayList;

import java.util.List;

import org.xmlpull.v1.XmlPullParser;

import org.xmlpull.v1.XmlSerializer;

import com.ljq.entity.Person;

import android.util.Xml;

/**

* Pull解析xml文件

*

* @author jiqinlin

*

*/

public class PullPersonService {

/**

* 使用pull解析器生成xml文件

*

* @param persons

* @param writer

* @return

*/

public static String writeXML(List 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();

} catch (Exception e) {

e.printStackTrace();

}

return writer.toString();

}

/**

* 使用pull解析器解析xml文件

*

* @param inStream

* @return

* @throws Exception

*/

public static List readXML(InputStream inStream) throws Exception {

XmlPullParser parser = Xml.newPullParser();

parser.setInput(inStream, "UTF-8");

int eventType = parser.getEventType();

Person currentPerson = null;

List persons = null;

while (eventType != XmlPullParser.END_DOCUMENT) {

switch (eventType) {

case XmlPullParser.START_DOCUMENT:// 文档开始事件,可以进行数据初始化处理

persons = new ArrayList();

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();

}

inStream.close();

return persons;

}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值