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

Android 采用Pull解析器解析和生成XML内容

2014-03-04 00:44 337 查看
对XML的了解还不是很深,现在只是用来保存对象数据,用来传数据。刚刚学了下用Pull解析器解析XML文件和生成XML文件。代码很简单。代码如下:

person.xml

<?xml version="1.0" encoding="UTF-8"?>
<persons>
<person id="21">
<name>caibinsong</name>
<age>21</age>
</person>
<person id="22">
<name>wanghuixing</name>
<age>20</age>
</person>
</persons>
personbean.java

package com.example.pull;

public class personbean {
int id;
String name;
int age;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}

}

MainActivity.java

package com.example.pull;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.List;

import android.os.Bundle;
import android.os.Environment;
import android.app.Activity;
import android.view.Menu;

public class MainActivity extends Activity {
List<personbean> personlist;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
InputStream xml=this.getClass().getClassLoader().getResourceAsStream("person.xml");
try {
personlist=personservice.getPersons(xml);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
for(personbean person:personlist){
System.out.println(person.getId()+":"+person.getName()+":"+person.getAge());
}
File xmlfile=new File(Environment.getExternalStorageDirectory()+"/xmlbaoc.xml");
FileOutputStream outstream;
try {
outstream = new FileOutputStream(xmlfile);
personservice.save(personlist, outstream);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}


personservice.java
package com.example.pull;

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;

public class personservice {
//读取数据
public static List<personbean> getPersons(InputStream xml) throws Exception{
List<personbean> personslist=null;
personbean person=null;
XmlPullParser pullparser=Xml.newPullParser();
pullparser.setInput(xml, "UTF-8");
int event=pullparser.getEventType();
while(event!=XmlPullParser.END_DOCUMENT){
switch(event){
case XmlPullParser.START_DOCUMENT:
personslist=new ArrayList<personbean>();
break;
case XmlPullParser.START_TAG:
if("person".equals(pullparser.getName())){
person=new personbean();
person.setId(Integer.parseInt(pullparser.getAttributeValue(0)));
}
if("name".equals(pullparser.getName())){
person.setName(pullparser.nextText());
}
if("age".equals(pullparser.getName())){
person.setAge(Integer.parseInt(pullparser.nextText()));
}
break;
case XmlPullParser.END_TAG:
if("person".equals(pullparser.getName())){
personslist.add(person);
person=null;
}
break;
}
event=pullparser.next();
}
return personslist;
}
//保存数据
public static void save(List<personbean> personlist,OutputStream out) throws Exception{
XmlSerializer serializer=Xml.newSerializer();
serializer.setOutput(out, "UTF-8");
serializer.startDocument("UTF-8", true);
serializer.startTag(null, "persons");
for(personbean person:personlist){
serializer.startTag(null, "person");
serializer.attribute(null, "id", String.valueOf(person.getId()));

serializer.startTag(null, "name");
serializer.text(person.getName());
serializer.endTag(null, "name");

serializer.startTag(null, "age");
serializer.text(String.valueOf(person.getAge()));
serializer.endTag(null, "age");

serializer.endTag(null, "person");
}
serializer.endTag(null, "persons");
serializer.endDocument();
out.flush();
out.close();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java android开发 xml