Android写入xml文件案例
来源:互联网 发布:万国数据外资企业 编辑:程序博客网 时间:2024/05/22 11:46
说明:该文章所写的案例和博文 《Android中Pull解析器解析xml文件案例》使用同一个工程测试;
首先
给出一个想要输出xml文件示例:
<?xml version="1.0" encoding="utf-8"?><persons> <person id="23"> <name>liming</name> <age>23</age> </person></persons>
然后
编写业务类:
package com.yangzi.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 com.yangzi.domain.Person;public class PersonService { /* * 解析xml文件 * @param xml xml文件数据流 * @return xml文件里的内容集合 * @throws Exception * */ public static List<Person> getPersons(InputStream xml) throws Exception { List<Person> persons = null; Person person = null; //得到xmlpull解析器 XmlPullParser pullParser = Xml.newPullParser(); //設置解析器要解析的内容,和编码方式 pullParser.setInput(xml,"utf-8"); //循环读取xml文件的节点 int event = pullParser.getEventType();//得到xml文件中的一个节点 while(event != XmlPullParser.END_DOCUMENT){ switch (event) { //xml文件开始节点,开始节点一般做数据的初始化 case XmlPullParser.START_DOCUMENT: persons = new ArrayList<Person>(); break; //若为开始节点 case XmlPullParser.START_TAG: //若为person节点 if("person".equals(pullParser.getName())){ //得到id person = new Person(); //int id = Integer.parseInt(pullParser.getAttributeValue(0)); //int id = new Integer(pullParser.getAttributeValue(0)); int id = Integer.valueOf(pullParser.getAttributeValue(0)); person.setId(id); } //若为名字节点 if("name".equals(pullParser.getName())){ String name = pullParser.nextText(); person.setName(name); } //若为年龄节点 if("age".equals(pullParser.getName())){ //int age = Integer.parseInt(pullParser.nextText()); //int age = new Integer(pullParser.nextText()); int age = Integer.valueOf(pullParser.nextText()); person.setAge(age); } break; case XmlPullParser.END_TAG: if("person".equals(pullParser.getName())){ persons.add(person); person = null; } break; } event = pullParser.next();//读取下一个节点 } return persons; } /* * 保存至xml文件 * @param out 输出方向 * @param persons 数据 * @throws Exception * */ public void save(OutputStream out,List<Person> persons) throws Exception{ XmlSerializer serializer = Xml.newSerializer();//获得反序列化对象 serializer.setOutput(out, "utf-8");//设置输出流及编码方式 serializer.startDocument("utf-8", true);//设置xml文件startDocument,同样,后面有对应的endDocument serializer.startTag(null, "persons");//开始节点 for(Person person:persons){ serializer.startTag(null, "person");//开始节点 serializer.attribute(null, "id",person.getId()+"");//设置开始节点属性值 //一个新的节点 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, "persons");//结束节点 } serializer.endTag(null, "persons");//结束节点 serializer.endDocument();//对应startDocument out.flush();//刷新流 out.close();//关闭流 }}
接着
测试一下,测试类的编写:
package com.yangzi.test;import java.io.File;import java.io.FileOutputStream;import java.io.InputStream;import java.util.List;import android.test.AndroidTestCase;import android.util.Log;import com.yangzi.domain.Person;import com.yangzi.service.PersonService;public class PersonServiceTest extends AndroidTestCase { private static final String TAG = "PersonServiceTest"; public static List<Person> persons = null; public void testPersons() throws Exception{ InputStream in = this.getClass().getClassLoader().getResourceAsStream("person.xml"); persons = PersonService.getPersons(in); for(Person per:persons){ Log.i(TAG, per.toString()); } } /**/ public void testSave()throws Exception{ //调用测试testPersons方法得到persons testPersons(); //得到该APP的包 String path = getContext().getFilesDir().toString(); //new 新文件 File xmlFile = new File(path,"xxx.xml"); //文件操作流 FileOutputStream out = new FileOutputStream(xmlFile); PersonService.save(out, persons); }}
OK,到此结束啦!
0 0
- Android写入xml文件案例
- Android Xml文件生成,Xml数据格式写入
- android编程:xml文件读取和写入
- android向内存卡写入xml文件
- XML文件的写入
- XML文件写入
- Python 写入XML 文件
- QXmlStreamWriter 写入xml 文件
- XML 文件写入
- C# 写入xml文件
- DOM4J 写入 XML 文件
- XML文件写入
- JAVA写入XML文件
- 写入XML文件问题
- android解析xml文件,并写入到短信中
- 构建xml文件案例
- 写入xml文件与读取xml文件
- Android学习--使用Pull解析器读取XML文件、将对象写入XML文件
- WAMP环境下修改mysql密码
- zabbix客户端配置
- Ruby探针的基本实现原理
- 在IOS中退出键盘最简单的方法
- Java inline函数
- Android写入xml文件案例
- MAC常用UNIX指令
- wordlist 1-page 2
- chkconfig 服务的添加、顺序
- hp envy dv4 5214tx 安装操作系统说明
- Spring mvc
- easyui datagrid 行编辑功能(行内编辑、删除、保存、取消)
- Accelerated C++ day3
- 设计模式的一点总结和思考(一)创建型