使用Pull 解析XML文件
来源:互联网 发布:python 判断加载完成 编辑:程序博客网 时间:2024/05/18 06:19
Android系统已经集成了Pull,所以不用导包。
Xml解析:
public static List<Person>getPersons(InputStream xml) throwsException {
List<Person> persons =null;
Person person = null;
// 获取xml的破解器,有下列两种方法
//XmlPullParser pullParser = XmlPullParserFactory.newInstance().newPullParser();
XmlPullParser pullParser = Xml.newPullParser();
// 为破解器设置要解析的数据
pullParser.setInput(xml,"UTF-8");
// 首先将xmml数据读到字节数组中,,然后一个一个字符读取,判断<?xml version="1.0" encoding="UTF-8" ?>
// 是否符合XML中的某个语法,然后触发相应的事件。
intenvnt = pullParser.getEventType();
while(envnt != XmlPullParser.END_DOCUMENT) { //调用结束条件
switch(envnt) {
caseXmlPullParser.START_DOCUMENT:
persons =newArrayList<Person>();
break;
caseXmlPullParser.START_TAG:
if("person".equals(pullParser.getName())) {
//获取节点的属性值
intid =newInteger(pullParser.getAttributeValue(0));
person = newPerson();
person.setId(id);
}
if("name".equals(pullParser.getName())) {
//获取节点后面的text
String name = pullParser.nextText();
person.setName(name);
}
if("age".equals(pullParser.getName())) {
intage =newInteger(pullParser.nextText());
person.setAge(age);
}
break;
caseXmlPullParser.END_TAG:
persons.add(person);
person = null;
break;
}
//解析到<?xml version="1.0" encoding="UTF-8" ?>完成之后,解析器不会自动解析,如果想继续解析结点,调用如下方法
envnt = pullParser.next();
}
returnpersons;
}
测试类:
private static finalStringTAG="TestDemo";
public voidtestPersons()throwsException{
InputStream is = this.getClass().getClassLoader().getResourceAsStream("person.xml");
List<Person> persons = PersonServace.getPersons(is);
for(Person p : persons){
Log.i(TAG,p.toString());
}
}
生成XML文件:
//保存数据到xml文件中
public static voidsave(List<Person> persons,OutputStream os)throwsException{
//得到序列化器
XmlSerializer serializer = Xml.newSerializer();
serializer.setOutput(os,"UTF-8");
//设置输出
serializer.startDocument("UTF-8",true);
serializer.startTag(null,"persons");
//迭代集合,得到每个元素,生成person节点
for(Person p : persons){
serializer.startTag(null,"person");
serializer.attribute(null,"id",p.getId().toString());
serializer.startTag(null,"name");
serializer.text(p.getName());
serializer.endTag(null,"name");
serializer.startTag(null,"age");
serializer.text(p.getAge().toString());
serializer.endTag(null,"age");
serializer.endTag(null,"person");
}
serializer.endTag(null,"persons");
//结束文档
serializer.endDocument();
os.flush();
os.close();
}
测试文件:
public void testSave()throwsException{
List<Person> persons =newArrayList<>();
persons.add(newPerson(19,"yanxi",10));
File xmlFile = newFile(getContext().getFilesDir(),"itcast.xml");
FileOutputStream fos = newFileOutputStream(xmlFile);
PersonServace.save(persons,fos);
}
- 使用PULL解析XML文件
- 使用PULL解析XML文件
- 使用pull解析xml文件
- 使用PULL解析XML文件
- 使用pull解析xml文件
- 使用PULL解析XML文件
- 使用Pull解析XML文件
- 使用Pull 解析XML文件
- 使用PULL解析XML文件
- android 使用 pull 解析xml文件
- 使用pull解析器操作xml文件
- 使用Pull解析器读取XML文件
- android 使用 pull 解析xml文件
- 使用Pull解析器生成XML文件
- 使用pull解析器读取xml文件
- 使用Pull解析器读取XML文件
- 使用Pull解析器读取XML文件
- 使用pull解析器操作xml文件
- Android layer-list(1)
- HDU 1257 最少拦截系统(LIS,DP,附宇神讲课笔记)
- 3000门徒内部训练绝密视频(泄密版)第3课:Scala中函数式编程彻底精通及Spark源码阅读
- 扩展ThreadPoolExecutor打印线程错误堆栈
- HDU 1558 判断两个线段相交附带并查集
- 使用Pull 解析XML文件
- HDU2176 取(m堆)石子游戏
- 《入门经典》2
- JDBC PreparedStatement接口的应用
- android面试(基础篇 9)
- activity的双向传值
- Ubuntu 14.04 ssh的安装和配置
- UVALive 7261 Xiongnu's Land(二分)
- hdu4707Pet最短路(spfa)