Android之PULL解析和生成XML
2011-08-12 15:55
429 查看
1>PULL解析XML
public void testPullGetPersons() throws Throwable{ InputStream inStream = getClass().getClassLoader().getResourceAsStream("persons.xml"); List<Person> persons = PULLPersonService.getPersons(inStream); for(Person person : persons){ Log.i(TAG, person.toString()); } } public void testSave() throws Throwable{ //File file = new File(this.getContext().getFilesDir(), "person.xml"); //FileOutputStream outStream = new FileOutputStream(file); List<Person> persons = new ArrayList<Person>(); persons.add(new Person(34, "lili", (short)12)); persons.add(new Person(56, "老毕", (short)32)); persons.add(new Person(39, "老张", (short)40)); /*FileOutputStream outStream = this.getContext().openFileOutput("person.xml", Context.MODE_PRIVATE); OutputStreamWriter writer = new OutputStreamWriter(outStream, "UTF-8"); BufferedWriter bWriter = new BufferedWriter(writer); */ StringWriter writer = new StringWriter(); PULLPersonService.save(persons, writer); Log.i(TAG, writer.toString()); }
package com.duantl.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 android.util.Xml; import com.duantl.domain.Person; /** * 采用Pull解析XML内容 */ public class PULLPersonService { public static void save(List<Person> persons, Writer writer) throws Throwable{ XmlSerializer serializer = Xml.newSerializer(); serializer.setOutput(writer); 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()+""); serializer.endTag(null, "age"); serializer.endTag(null, "person"); } serializer.endTag(null, "persons"); serializer.endDocument(); writer.flush(); writer.close(); } public static List<Person> getPersons(InputStream inStream) throws Throwable{ List<Person> persons = null; Person person = null; XmlPullParser parser = Xml.newPullParser(); parser.setInput(inStream, "UTF-8"); int eventType = parser.getEventType();//产生第一个事件 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("person".equals(name)){ person = new Person(); person.setId(new Integer(parser.getAttributeValue(0))); } if(person!=null){ if("name".equals(name)){ person.setName(parser.nextText());//获取解析器当前指向元素的下一个文本节点的值 } if("age".equals(name)){ person.setAge(new Short(parser.nextText())); } } break; case XmlPullParser.END_TAG: if("person".equals(parser.getName())){ persons.add(person); person = null; } break; } eventType = parser.next(); } return persons; } }
相关文章推荐
- Android下Xml解析技术(四)、pull生成Xml文件
- 【Android网络开发の3】XML之PULL方式 解析和生成XML文件
- Android 下用 Pull 解析和生成 XML
- Android_xml_pull解析和生成xml文件
- Android 下用 Pull 解析和生成 XML
- Android中pull解析和生成xml数据到一个字符串中
- android 对xml文件的pull解析,生成xml ,对xml文件的增删
- Android开发之Pull解析读取和生成XML文件
- Android下Pull生成xml与解析xml
- Android--入门---16---(Android中xml 的生成 & 解析---DOM . SAX . PULL)
- Android开发之使用PULL解析和生成XML
- Android开发之使用PULL解析和生成XML
- Android中的XML解析与生成——Pull解析xml、实现xml文件的生成
- Android 生成和Pull解析xml
- android 生成、pull解析xml文件
- android利用pull技术来解析和生成xml文件
- Android中的XML的Pull解析与生成
- Android使用PULL解析和生成XML文件
- android中pull解析xml和生成xml
- android学习——使用SAX、DOM 和 PULL 解析xml文件,及使用pull生成xml文件