android xml解析 XmlPullParser的使用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
android xml解析XmlPullParser的使用/blog/1000403
android xml 的解析.
1.普通型
Xml代码
1.<?xml version=”1.0″ ?>
2.<statuses>
3.<status>
4.<source1>a</source1>
5.<source2>a</source2>
6.<source2>a</source2>
7.</status>
8.<statuses>
9.</xml>
解析代码.
Java代码
1.try{
2.xpp.setInput( new StringReader ( “xml string” ) );
3.XmlPullParser parser = XmlPullParserFactory.newInstance()
4..newPullParser();
5.int eventType = parser.getEventType();
6.while (eventType != XmlPullParser.END_DOCUMENT) {
7.if (eventType == XmlPullParser.START_TAG) {
8.String name = parser.getName();
9.Log.v(“tag”,parser.getName()+”=”+parser.next());
10.}
11.eventType = parser.next();
12.}
13.} catch (XmlPullParserException e) {
14.} catch (Exception e) {
15.}
2.嵌套子类.
Xml代码
1.<?xml version=”1.0″encoding=”UTF-8″standalone=”no”?>
2.<statuses>
3.<status>
4. <source1>a</source1>
5. <source2>a</source2>
6. <source2>a</source2>
7. <user>
8. <source1>a</source1>
9. <source2>a</source2>
10. <source2>a</source2>
11. </user>
12.</status>
13.<status>
14. <source1>a</source1>
15. <source2>a</source2>
16. <source2>a</source2>
17. <user>
18. <source1>a</source1>
19. <source2>a</source2>
20. <source2>a</source2>
21. </user>
22.</status>
23.<statuses>
24.</xml>
解析代码:
Java代码
1.try{
2.XmlPullParser parser = XmlPullParserFactory.newInstance()
3..newPullParser();
4. xpp.setInput( new StringReader ( xml string ) );
5.parser.next();
6.parser.require(XmlPullParser.START_TAG, null, “statuses”);
7.while (parser.nextTag() != XmlPullParser.END_TAG) {
8.parser.require(XmlPullParser.START_TAG, null, “status”);
9.for (int i=0;i<3;i++){
10.parser.nextTag();
11.Log.v(“tag”,parser.getName()+”=”+ parser.nextText());
12.}
13.while (parser.nextTag() != XmlPullParser.END_TAG) {
14.parser.require(XmlPullParser.START_TAG, null, “user”);
15.while (parser.nextTag() != XmlPullParser.END_TAG) {
16.String name = parser.getName();
17.String text2 = parser.nextText();
18.Log.v(“tag”,”text2″+text2);
19.parser.require(XmlPullParser.END_TAG, null, name);
20.}
21.parser.require(XmlPullParser.END_TAG, null, “user”);
22.}
23.parser.require(XmlPullParser.END_TAG, null, “status”);
24.}
25.parser.require(XmlPullParser.END_TAG, null, “statuses”);
26.parser.next();
27.parser.require(XmlPullParser.END_DOCUMENT, null, null);
28.// erinfo.dump();
29.} catch (XmlPullParserException e) {
30.} catch (Exception e) {
31.}
最里面那个可以满足 <user>也是循环. 如果<user>不循环.
可以使用.
Java代码
1.for (int i=0;i<3;i++){
2.parser.nextTag();
3.Log.v(“tag”,parser.getName()+”=”+ parser.nextText());
4.}
代替.
读取XML格式文件
✓首先通过调用资源对象的getXml()函数,获取到XML解析器
XmlPullParser
✓XmlPullParser是Android平台标准的XML解析器,这项技术来自一
个开源的XML解析API项目XMLPULL
ResourceFileDemo示例中关于读取XML文件的核心代码如下 XmlPullParser parser = resources.getXml(R.xml.people);
String msg = "";
try {
while (parser.next() != XmlPullParser.END_DOCUMENT) {
String people = parser.getName();
String name = null;
String age = null;
String height = null;
if ((people != null) &&people.equals("person")) {
int count = parser.getAttributeCount();
for (inti = 0; i< count; i++) {
String attrName = parser.getAttributeName(i);
String attrValue = parser.getAttributeValue(i);
if ((attrName != null) &&attrName.equals("name")) {
name = attrValue;
} else if ((attrName != null) &&attrName.equals("age")) {
age = attrValue;
} else if ((attrName != null) &&attrName.equals("height")) {
height = attrValue;
}
}
22. if ((name != null) && (age != null) && (height != null)) {
23. msg += "姓名:"+name+",年龄:"+age+",身高:"+height+"\n";
24.}
25.}
26.}
27.} catch (Exception e) {
28.Log.e("ResourceFileDemo", e.getMessage(), e);
29.}
30.displayView.setText(msg);
1.第1行代码通过资源对象的getXml()函数获取到XML解析器
2.第4行代码的parser.next()方法可以获取到高等级的解析事件,并通
过对比确定事件类型
3.第5行代码使用getName()函数获得元素的名称
4.第10行代码使用getAttributeCount()函数获取元素的属性数量
✓第12行代码通过getAttributeName()函数得到属性名称
✓第14行到第19行代码通过分析属性名获取到正确的属性值
✓第23行代码将属性值整理成需要显示的信息。