博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
15_采用Pull解析器解析和生成XML内容
阅读量:4640 次
发布时间:2019-06-09

本文共 4720 字,大约阅读时间需要 15 分钟。

java还提供SAX和DOM用于解析XML

Android还集成了Pull解析器——推荐

 

package cn.itcast.service;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.XmlSerializer;import android.util.Xml;import cn.itcast.domain.Person;public class PersonService {        /**     * 读取数据     * @param xml     * @return     * @throws Exception     */    public static List
getPersons(InputStream xml) throws Exception{ List
persons = null; Person person = null; XmlPullParser pullparser = Xml.newPullParser(); pullparser.setInput(xml, "UTF-8"); int event = pullparser.getEventType(); while (event!=pullparser.END_DOCUMENT){ switch (event) { case XmlPullParser.START_DOCUMENT: // 数据初始化 persons = new ArrayList
(); break; case XmlPullParser.START_TAG: // 数据read if ("person".equals(pullparser.getName())){ int id = new Integer(pullparser.getAttributeValue(0)); person = new Person(); person.setId(id); } if ("name".equals(pullparser.getName())) { String name = pullparser.nextText(); person.setName(name); } if ("age".equals(pullparser.getName())) { int age = new Integer(pullparser.nextText()); person.setAge(age); } break; case XmlPullParser.END_TAG: if ("person".equals(pullparser.getName())){ persons.add(person); } break; default: break; } event = pullparser.next(); } return persons; } /** * 保存数据 * @param persons * @param out * @throws Exception */ public static void savePersons(List
persons, OutputStream out) throws Exception{
XmlSerializer serializer = Xml.newSerializer(); serializer.setOutput(out, "UTF-8"); 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().toString()); serializer.endTag(null, "name"); serializer.startTag(null, "age"); serializer.text(person.getAge().toString()); serializer.endTag(null, "age"); serializer.endTag(null, "person"); } serializer.endTag(null, "persons"); serializer.endDocument(); out.flush(); out.close(); }}

 

//  单元测试

 

public class PersonServiceTest extends AndroidTestCase {        public void testPersons() throws Exception{        InputStream xml = this.getClass().getClassLoader().getResourceAsStream("person.xml");        List
persons = PersonService.getPersons(xml); for (Person person:persons){ Log.i("test111", person.toString()); } } public void testSave() throws Exception{ List
persons = new ArrayList
(); persons.add(new Person(10, "10", 10)); persons.add(new Person(20, "20", 20)); File xml = new File(getContext().getFilesDir(), "itcast.xml"); FileOutputStream outputStream = new FileOutputStream(xml); PersonService.savePersons(persons, outputStream); outputStream.close(); }}

//  数据结构

package cn.itcast.domain;public class Person {    private Integer id;    private String name;    private Integer age;    public Integer getId() {        return id;    }    public void setId(Integer id) {        this.id = id;    }    public String getName() {        return name;    }    @Override    public String toString() {        return "Person [id=" + id + ", name=" + name + ", age=" + age + "]";    }    public void setName(String name) {        this.name = name;    }    public Integer getAge() {        return age;    }    public void setAge(Integer age) {        this.age = age;    }    public Person(Integer id, String name, Integer age) {        this.id = id;        this.name = name;        this.age = age;    }        public Person() {}        }

 

转载于:https://www.cnblogs.com/carl2380/p/4159619.html

你可能感兴趣的文章
IP,路由,交换基础培训记录
查看>>
sdut-1118 C语言实验——从大到小输出a、b、c(选择结构)
查看>>
鼠标响应事件
查看>>
使用 install.packages() 安装所需的包
查看>>
matlab 工具函数 —— normalize(归一化数据)
查看>>
狄拉克函数(Dirac delta function)
查看>>
经典书单 —— 语言/算法/机器学习/深度学习/AI/CV/PGM
查看>>
计算积分的方法 —— 分布积分
查看>>
OpenCV——Perlin Noise
查看>>
OpenCV——PS 滤镜, 曝光过度
查看>>
WDA基础十六:ALV的颜色
查看>>
猎头和HR如何从简历角度判断和筛选候选人
查看>>
Forward团队-爬虫豆瓣top250项目-需求分析
查看>>
单例模式备忘
查看>>
CMake 使用方法(转)
查看>>
laraval 闭包
查看>>
at91 uart driver for vxworks
查看>>
汇编第三日
查看>>
linux下如何用php读取word
查看>>
Android中Intent
查看>>