首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > XML SOAP >

Android 中 XmlPullParser 读写 XML 的步骤

2012-07-30 
Android 中 XmlPullParser 读写 XML 的方法http://www.xmlpull.org/ XmlPullParser 是 Android 内置的 XML

Android 中 XmlPullParser 读写 XML 的方法
http://www.xmlpull.org/ XmlPullParser 是 Android 内置的 XML 解析器,运行方式与 SAX 解析器相似。它提供了类似的事件,如:开始元素和结束元素事件,使用parser.next()可以进入下一个元素并触发相应事件。事件将作为数值代码被发送,因此可以使用一个switch对感兴趣的事件进行处理。当元素开始解析时,调用parser.nextText()方法可以获取下一个Text类型节点的值。

person.xml如下:

person.xml如下:<?xml version="1.0" encoding="UTF-8"?><persons><person id="23">   <name>liming</name>   <age>30</age></person><person id="20">   <name>lili</name>   <age>25</age></person></persons>


在Android中使用XmlPullParser读写的代码:

//读取public class PullService {public static List<Person> readXML(InputStream inputStream) throws IOException{    XmlPullParser parser = Xml.newPullParser();    try {    parser.setInput(inputStream, "UTF-8");    int eventType = parser.getEventType();       Person currentPerson = null;    List<Person> persons = null;    while (eventType != XmlPullParser.END_DOCUMENT) {     switch (eventType) {    case XmlPullParser.START_DOCUMENT://文档开始事件,可以进行数据初始化处理      persons = new ArrayList<Person>();      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();    }    inputStream.close();    return persons;    } catch (Exception e) {     e.printStackTrace();    }    return null;   } 
//保存public static String writeXML(List<Person> 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();         return writer.toString();     } catch (Exception e) {         e.printStackTrace();     }     return null;  }}

 

本文参考:http://www.linuxidc.com/Linux/2010-11/29768.htm

热点排行