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

android pull 解析xml

2015-09-23 11:56 302 查看
xml 内容:

<persons>
<person id="18">
<name>tom</name>
<age>18</age>
</person>
<person id="19">
<name>jack</name>
<age>19</age>
</person>

</persons>

/*Person xml解析类*/

public class PersonService {
/**
* 获取数据
* @param xml
* @return
* @throws Exception
*/
public static List<Person> getPersons(InputStream xml) throws Exception{
List<Person> persons = null;
Person person = null;
XmlPullParser pullParser = Xml.newPullParser();
pullParser.setInput(xml, "UTF-8");//为Pull解析器设置要解析的XML数据
int event = pullParser.getEventType();
while(event != XmlPullParser.END_DOCUMENT){
switch (event) {
case XmlPullParser.START_DOCUMENT:
persons = new ArrayList<Person>();
break;

case XmlPullParser.START_TAG:
if("person".equals(pullParser.getName())){
int id = new Integer(pullParser.getAttributeValue(0));
person = new Person();
person.setId(id);
}
if("name".equals(pullParser.getName())){
String name = pullParser.nextText();
person.setName(name);
}
if("age".equals(pullParser.getName())){
int age = new Integer(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;
}
/**
* 保存数据
* @param persons 数据
* @param out 输出方向
* @throws Exception
*/
public static void save(List<Person> persons, OutputStream out) throws Exception{
XmlSerializer serializer = Xml.newSerializer();
serializer.setOutput(out, "UTF-8");
serializer.startDocument("UTF-8", true);
serializer.startTag(null, "persons");
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();
out.flush();
out.close();
}

}

/*解析调用*/

public class PersonServiceTest extends AndroidTestCase {
private static final String TAG = "PersonServiceTest";

public void testPersons() throws Exception{
InputStream xml = this.getClass().getClassLoader().getResourceAsStream("person.xml");
List<Person> persons = PersonService.getPersons(xml);
for(Person person : persons){
Log.i(TAG, person.toString());
}
}

public void testSave() throws Exception{
List<Person> persons = new ArrayList<Person>();
persons.add(new Person(43, "zhangxx", 80));
persons.add(new Person(12, "lili", 20));
persons.add(new Person(78, "xiaoxiao", 8));
// <包>/files
File xmlFile = new File(getContext().getFilesDir(), "itcast.xml");
FileOutputStream outStream = new FileOutputStream(xmlFile);
PersonService.save(persons, outStream);
}

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