Pull parses XML documents;
First, create an android project and create a project named person_list and xml in cn. class3g. service:
<? Xml version = "1.0" encoding = "UTF-8"?>
<Persons>
<Person id = "111">
<Name> Tom </name>
<Age> 20 </age>
</Person>
<Person id = "222">
<Name> Mary </name>
<Age> 17 </age>
</Person>
</Persons>
<? Xml version = "1.0" encoding = "UTF-8"?>
<Persons>
<Person id = "111">
<Name> Tom </name>
<Age> 20 </age>
</Person>
<Person id = "222">
<Name> Mary </name>
<Age> 17 </age>
</Person>
</Persons>
Encapsulate javabean, person:
Package cn. class3g. domain;
Public class Person {
Private int id;
Private String name;
Private int age;
Public Person (){
}
Public Person (int id, String name, int age ){
Super ();
This. id = id;
This. name = name;
This. age = 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;
}
Public String toString (){
Return "Person [id =" + id + ", name =" + name + ", age =" + age + "]";
}
}
Package cn. class3g. domain;
Public class Person {
Private int id;
Private String name;
Private int age;
Public Person (){
}
Public Person (int id, String name, int age ){
Super ();
This. id = id;
This. name = name;
This. age = 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;
}
Public String toString (){
Return "Person [id =" + id + ", name =" + name + ", age =" + age + "]";
}
}
Create a PersonHandler class under the service package
<Pre name = "code" class = "html"> package cn. class3g. service;
Import java. io. InputStream;
Import java. io. Writer;
Import java. util. ArrayList;
Import java. util. List;
Import org. xmlpull. v1.XmlPullParser;
Import org. xmlpull. v1.XmlSerializer;
Import android. util. Xml;
Import cn. class3g. domain. Person;
Public class PullPersonService {
Public static List <Person> getPersonList (InputStream inStream)
Throws Exception {
List <Person> personList = null;
// Get the XmlPullParser parser
XmlPullParser parser = Xml. newPullParser ();
// Unified Encoding
Parser. setInput (inStream, "UTF-8 ");
Int eventType = parser. getEventType ();
// Create a person object
Person person = null;
// Start Parsing
While (eventType! = XmlPullParser. END_DOCUMENT ){
Switch (eventType ){
Case XmlPullParser. START_DOCUMENT:
PersonList = new ArrayList <Person> ();
Break;
Case XmlPullParser. START_TAG:
// Determine whether the current element name is person
If ("person". equals (parser. getName ())){
Person = new Person ();
Person. setId (Integer. valueOf (parser. getAttributeValue (0 )));
} Else if ("name". equals (parser. getName ())){
Person. setName (parser. nextText ());
} Else if ("age". equals (parser. getName ())){
Person. setAge (Integer. valueOf (parser. nextText ()));
}
Break;
Case XmlPullParser. END_TAG:
If ("person". equals (parser. getName () & person! = Null ){
PersonList. add (person );
Person = null;
}
Break;
}
// The next method is called to parse the next node and return the event type code parsed by the next node.
EventType = parser. next ();
}
Return personList;
}
}
<Pre name = "code" class = "html"> package cn. class3g. service;
Import java. io. InputStream;
Import java. io. Writer;
Import java. util. ArrayList;
Import java. util. List;
Import org. xmlpull. v1.XmlPullParser;
Import org. xmlpull. v1.XmlSerializer;
Import android. util. Xml;
Import cn. class3g. domain. Person;
Public class PullPersonService {
Public static List <Person> getPersonList (InputStream inStream)
Throws Exception {
List <Person> personList = null;
// Get the XmlPullParser parser
XmlPullParser parser = Xml. newPullParser ();
// Unified Encoding
Parser. setInput (inStream, "UTF-8 ");
Int eventType = parser. getEventType ();
// Create a person object
Person person = null;
// Start Parsing
While (eventType! = XmlPullParser. END_DOCUMENT ){
Switch (eventType ){
Case XmlPullParser. START_DOCUMENT:
PersonList = new ArrayList <Person> ();
Break;
Case XmlPullParser. START_TAG:
// Determine whether the current element name is person
If ("person". equals (parser. getName ())){
Person = new Person ();
Person. setId (Integer. valueOf (parser. getAttributeValue (0 )));
} Else if ("name". equals (parser. getName ())){
Person. setName (parser. nextText ());
} Else if ("age". equals (parser. getName ())){
Person. setAge (Integer. valueOf (parser. nextText ()));
}
Break;
Case XmlPullParser. END_TAG:
If ("person". equals (parser. getName () & person! = Null ){
PersonList. add (person );
Person = null;
}
Break;
}
// The next method is called to parse the next node and return the event type code parsed by the next node.
EventType = parser. next ();
}
Return personList;
}
}
Next, create a Test class under the activity package:
Package cn. class3g. activity;
Import java. io. InputStream;
Import java. util. ArrayList;
Import java. util. List;
Import cn. class3g. domain. Person;
Import cn. class3g. service. PullPersonService;
Import android. test. AndroidTestCase;
Import android. util. Log;
Public class Test extends AndroidTestCase {
Public void testPull () throws Throwable {
InputStream inStream = this. getClass (). getClassLoader ()
. GetResourceAsStream ("person_list.xml ");
List <Person> personList = PullPersonService. getPersonList (inStream );
Log. I ("TAG", personList. toString ());
}
}
Package cn. class3g. activity;
Import java. io. InputStream;
Import java. util. ArrayList;
Import java. util. List;
Import cn. class3g. domain. Person;
Import cn. class3g. service. PullPersonService;
Import android. test. AndroidTestCase;
Import android. util. Log;
Public class Test extends AndroidTestCase {
Public void testPull () throws Throwable {
InputStream inStream = this. getClass (). getClassLoader ()
. GetResourceAsStream ("person_list.xml ");
List <Person> personList = PullPersonService. getPersonList (inStream );
Log. I ("TAG", personList. toString ());
}
}
Add the test permission to the list before the test:
Test with Android JUnit Test:
Console output:
Test successful
Author: jjaze3344