欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

基于Android XML解析与保存的实现

程序员文章站 2023-11-26 19:54:58
解析xml文件:在android平台上可以使用sax、dom和android附带的pull解析器解析xml文件;pull解析器提供了各种事件,使用parser.next...

解析xml文件:
在android平台上可以使用sax、dom和android附带的pull解析器解析xml文件;
pull解析器提供了各种事件,使用parser.next()方法进入下一个元素并触发相应事件,pull解析器产生的事件是一个数字,可以通过switch对感兴趣的事件进行处理;通过paser.nexttext()方法可以获取下一个text类型的节点的值;
http://xmlpull.org/xmlpull-website/impls.shtml;

读取xml
xmlpullparser pullparser = xml.newpullparser();
pullparser.setinput(xml, "utf-8");//为破解器添加要解析的xml数据
int event = pullparser.geteventtype();//开始读取,获取事件返回值
pullparser.getname();//获取节点名称
pullparser.getattributevalue(0);//获取第一个属性的值
pullparser.nexttext();//获取标签之后的节点的内容
event = pullparser.next();//解析器遇到结束标签不会自动向下解析,需要调用此方法进行继续执行;

保存文件到xml

public static void save(list<person> persons, outputstream outstream)
throws exception, illegalstateexception, ioexception {
xmlserializer serializer = xml.newserializer();//获取xml写入信息的序列化对象
serializer.setoutput(outstream, "utf-8");//设置要写入的outputstream
serializer.startdocument("utf-8", true);//设置文档标签

serializer.starttag(null, "persons");//设置开始标签,第一个参数为namespace
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().tostring());
serializer.endtag(null, "age");

serializer.endtag(null, "person");
}
serializer.endtag(null, "persons");
serializer.enddocument();
outstream.flush();
outstream.close();
}