android中Pull解析器
pull解析器
xml解析器有很多种,常见的有Jdom,dom4j等,pull解析xml为android系统所用到的解析器,是android自带的解析器。
preparation
1.项目结构
2.项目的代码:
Colleage.java(bean对象)
1
package com.rhg.domain;
2![]()
3![]()
public class Colleage
{
4![]()
5
private Integer id;
6
private String name;
7
private Integer age;
8![]()
9![]()
public Colleage()
{
10
// TODO Auto-generated constructor stub
11
}
12![]()
13![]()
public Colleage(int id,String name,int age)
{
14
this.id = id;
15
this.name = name;
16
this.age = age;
17
}
18![]()
19![]()
public Integer getId()
{
20
return id;
21
}
22![]()
public void setId(Integer id)
{
23
this.id = id;
24
}
25![]()
public String getName()
{
26
return name;
27
}
28![]()
public void setName(String name)
{
29
this.name = name;
30
}
31![]()
public Integer getAge()
{
32
return age;
33
}
34![]()
public void setAge(Integer age)
{
35
this.age = age;
36
}
37![]()
38
@Override
39![]()
public String toString()
{
40
// TODO Auto-generated method stub
41
return "Colleage[id="+id+",name="+name+",age="+age;
42
}
43![]()
44
}
ColleageService.java(实现解析xml和生成xml)
1
package com.rhg.service;
2![]()
3
import java.io.InputStream;
4
import java.io.OutputStream;
5
import java.util.ArrayList;
6
import java.util.List;
7![]()
8
import org.xmlpull.v1.XmlPullParser;
9
import org.xmlpull.v1.XmlSerializer;
10![]()
11
import android.util.Xml;
12![]()
13
import com.rhg.domain.Colleage;
14![]()
15![]()
public class ColleageService
{
16![]()
17![]()
public List<Colleage> read(InputStream in) throws Exception
{
18
List<Colleage> colleages = null;
19
Colleage colleage = null;
20
XmlPullParser parser = Xml.newPullParser();
21
parser.setInput(in, "UTF-8");
22
int event = parser.getEventType();
23![]()
while(event!=parser.END_DOCUMENT)
{
24![]()
switch(event)
{
25
case XmlPullParser.START_DOCUMENT:
26
colleages = new ArrayList<Colleage>();
27
break;
28
case XmlPullParser.START_TAG:
29![]()
if("colleage".equals(parser.getName()))
{
30
Integer id = new Integer(parser.getAttributeValue(0));
31
colleage = new Colleage();
32
colleage.setId(id);
33
}
34![]()
if("name".equals(parser.getName()))
{
35
String name = parser.nextText();
36
colleage.setName(name);
37
}
38![]()
if("age".equals(parser.getName()))
{
39
int age =new Integer(parser.nextText());
40
colleage.setAge(age);
41
}
42
break;
43
case XmlPullParser.END_TAG:
44![]()
if("colleage".equals(parser.getName()))
{
45
colleages.add(colleage);
46
colleage = null;
47
}
48
break;
49
}
50
event = parser.next();
51
}
52
return colleages;
53
}
54![]()
55![]()
public static void save(List<Colleage> colleages,OutputStream out) throws Exception
{
56
XmlSerializer xml = Xml.newSerializer();
57
xml.setOutput(out, "UTF-8");
58
xml.startDocument("UTF-8", true);
59
xml.startTag(null, "colleages");
60![]()
for(Colleage colleage:colleages)
{
61
xml.startTag(null, "colleage");
62
xml.attribute(null, "id", colleage.getId().toString());
63![]()
64
xml.startTag(null, "name");
65
xml.text(colleage.getName());
66
xml.endTag(null, "name");
67![]()
68
xml.startTag(null, "age");
69
xml.text(colleage.getAge().toString());
70
xml.endTag(null, "age");
71![]()
72
xml.endTag(null, "colleage");
73
}
74
xml.endTag(null, "colleages");
75
xml.endDocument();
76
out.flush();
77
out.close();
78
}
79
}
80
ColleageTest(用于测试生成由对象生成xml 和解析xml生成对象)
1
package com.rhg.test;
2![]()
3
import java.io.File;
4
import java.io.FileNotFoundException;
5
import java.io.FileOutputStream;
6
import java.io.InputStream;
7
import java.util.ArrayList;
8
import java.util.List;
9![]()
10
import android.test.AndroidTestCase;
11
import android.util.Log;
12![]()
13
import com.rhg.domain.Colleage;
14
import com.rhg.service.ColleageService;
15![]()
16![]()
public class ColleageTest extends AndroidTestCase
{
17![]()
18![]()
public void testRead()
{
19
ColleageService cs = new ColleageService();
20
InputStream is = this.getContext().getClassLoader().getResourceAsStream("NewFile.xml");
21![]()
try
{
22
List<Colleage> colleages = cs.read(is);
23![]()
for(Colleage colleage:colleages)
{
24
Log.v("colleageTest", "1-----"+colleage.toString());
25
}
26![]()
} catch (Exception e)
{
27
// TODO Auto-generated catch block
28
e.printStackTrace();
29
}
30
}
31![]()
32![]()
public void testSave() throws Exception
{
33
List<Colleage> colleages = new ArrayList<Colleage>();
34
Colleage colleage1 = new Colleage(1,"zyh1",10);
35
Colleage colleage2 = new Colleage(2,"zyh2",20);
36
Colleage colleage3 = new Colleage(3,"zyh3",30);
37
colleages.add(colleage1);
38
colleages.add(colleage2);
39
colleages.add(colleage3);
40![]()
41
File xmlFile = new File(getContext().getFilesDir(),"zyh.xml");
42
FileOutputStream out = new FileOutputStream(xmlFile);
43
ColleageService.save(colleages, out);
44![]()
45
}
46
}
47
NewFile.xml
1
<?xml version="1.0" encoding="UTF-8"?>
2
<colleages>
3
<colleage id="1">
4
<name>qh</name>
5
<age>100</age>
6
</colleage>
7
<colleage id="2">
8
<name>bd</name>
9
<age>101</age>
10
</colleage>
11
</colleages>
AndroidManifest.xml
1
<?xml version="1.0" encoding="utf-8"?>
2
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3
package="com.rhg.xmldemo"
4
android:versionCode="1"
5
android:versionName="1.0" >
6![]()
7
<uses-sdk
8
android:minSdkVersion="8"
9
android:targetSdkVersion="17" />
10![]()
11
<application
12
android:allowBackup="true"
13
android:icon="@drawable/ic_launcher"
14
android:label="@string/app_name"
15
android:theme="@style/AppTheme" >
16
<activity
17
android:name="com.rhg.xmldemo.MainActivity"
18
android:label="@string/app_name" >
19
<intent-filter>
20
<action android:name="android.intent.action.MAIN" />
21![]()
22
<category android:name="android.intent.category.LAUNCHER" />
23
</intent-filter>
24
</activity>
25
<uses-library android:name="android.test.runner"/>
26
</application>
27![]()
28
<instrumentation android:name="android.test.InstrumentationTestRunner"
29
android:targetPackage="com.rhg.xmldemo" android:label="Tests for My App" />
30
</manifest>
31
xml解析器有很多种,常见的有Jdom,dom4j等,pull解析xml为android系统所用到的解析器,是android自带的解析器。
preparation
1.项目结构
2.项目的代码:
Colleage.java(bean对象)
1
2
3

4
5
6
7
8
9

10
11
12
13

14
15
16
17
18
19

20
21
22

23
24
25

26
27
28

29
30
31

32
33
34

35
36
37
38
39

40
41
42
43
44
ColleageService.java(实现解析xml和生成xml)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

16
17

18
19
20
21
22
23

24

25
26
27
28
29

30
31
32
33
34

35
36
37
38

39
40
41
42
43
44

45
46
47
48
49
50
51
52
53
54
55

56
57
58
59
60

61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
ColleageTest(用于测试生成由对象生成xml 和解析xml生成对象)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

17
18

19
20
21

22
23

24
25
26

27
28
29
30
31
32

33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
NewFile.xml
1
2
3
4
5
6
7
8
9
10
11
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31