您的位置:首页 > 移动开发 > Android开发

android中pull解析xml和生成xml

2012-05-05 16:01 387 查看
一,用pull解析xml

1,将要解析的文件放到src下面,因为程序打包后,会自动将src的文件一起打包的.

person.xml内容:

<?xmlversion="1.0"encoding="UTF-8"?>
<persons>
<personid="23">
<name>zhangsan</name>
<age>30</age>
</person>
<personid="20">
<name>lisi</name>
<age>25</age>
</person>
</persons>
开始解析xml

/**
*获取数据
*
*@paramxml
*@return
*@throwsException
*/
publicstaticList<Person>getPersons(InputStreamxml)throwsException{
List<Person>persons=null;
Personperson=null;
XmlPullParserpullParser=Xml.newPullParser();
pullParser.setInput(xml,"UTF-8");//为Pull解析器设置要解析的XML数据,并且按照utf-8编码进行读取
intevent=pullParser.getEventType();
while(event!=XmlPullParser.END_DOCUMENT){
switch(event){
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);
System.out.println("获取的id是:"+id);
}
if("name".equals(pullParser.getName())){
Stringname=pullParser.nextText();
person.setName(name);
System.out.println("获取的name是:"+name);
}
if("age".equals(pullParser.getName())){
intage=newInteger(pullParser.nextText());
person.setAge(age);
System.out.println("获取的age是:"+age);
}
break;

caseXmlPullParser.END_TAG://结束标签时
if("person".equals(pullParser.getName())){
persons.add(person);
person=null;
}
break;
}
event=pullParser.next();
}
returnpersons;
}
测试:

publicvoidtestPersons()throwsException{
InputStreamxml=this.getClass().getClassLoader().getResourceAsStream(
"person.xml");//将src下的xml写入
List<Person>persons=PersonService.getPersons(xml);
for(Personperson:persons){
Log.i("解析xml的数据:",person.toString());
}
}


二,生成xml文件:

生成的实体类

publicstaticvoidsave(List<Person>persons,OutputStreamout)
throwsException{
XmlSerializerserializer=Xml.newSerializer();
serializer.setOutput(out,"UTF-8");
serializer.startDocument("UTF-8",true);//<?xmlversion='1.0'encoding='UTF-8'standalone='yes'?>
serializer.startTag(null,"persons");
for(Personperson: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();
out.flush();
out.close();
}

测试:

publicvoidtestSave()throwsException{
List<Person>persons=newArrayList<Person>();
persons.add(newPerson(43,"zhangsan",80));
persons.add(newPerson(12,"lisi",20));
persons.add(newPerson(78,"wangwu",8));
//<包>/files
FilexmlFile=newFile(getContext().getFilesDir(),"yjr.xml");
FileOutputStreamoutStream=newFileOutputStream(xmlFile);
PersonService.save(persons,outStream);
}
生成的文件:

yjr.xml:将文件导出来

<?xmlversion='1.0'encoding='UTF-8'standalone='yes'?>
<persons>
<personid="43">
<name>zhangsan</name>
<age>80</age>
</person>
<personid="12">
<name>lisi</name>
<age>20</age>
</person>
<personid="78">
<name>wangwu</name>
<age>8</age>
</person>
</persons>


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息