Android XML parsing-Pull

Source: Internet
Author: User

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
 

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.