pull解析和生成xml
2016-06-24 15:27
239 查看
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 {
}
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<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(); } catch (Exception e) { e.printStackTrace(); } return writer.toString(); } /** * 使用pull解析器解析xml文件 * * @param inStream * @return * @throws Exception */ public static List<Person> readXML(InputStream inStream) throws Exception { XmlPullParser parser = Xml.newPullParser(); parser.setInput(inStream, "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(); } inStream.close(); return persons; }
}
相关文章推荐
- platform_device与platform_driver
- Java之关于This的用法
- easyui-datagrid 实用方法
- Leetcode no. 168
- 百度推送
- 期末考试-献给阿尔吉侬的花束(算法基础 第10周)
- 2016.6.24——vector<vector<int>>【Binary Tree Level Order Traversal】
- js中substr,substring,indexOf,lastIndexOf,split的用法
- Android中ListView无法点击
- Android应用程序窗口(Activity)的窗口对象(Window)的创建过程分析(转)
- 接手1号店的京东 更看重与沃尔玛的合作
- File对象的renameTo(newFile)方法 修改文件名称或后缀
- Android 第三方分享
- 区块链技术下的虚拟货币能发展到什么阶段
- XlistView简单集成示例
- Android收发短信
- 【Android---项目中】TextView动态设置颜色
- android 应用开发,利用反射机制调用非官方api
- (干货)大数据:70多个网站让你免费获取大数据存储库
- (干货)大数据:70多个网站让你免费获取大数据存储库