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

Android Pull解析Xml字符串

2014-09-23 19:51 309 查看
1、要解析的xml格式如下:

[html] view
plaincopy

<UpdateResult NeedUpdate="true">  

    <FileUrl value="http://download.note.com/res/6650fd66-551f-47b5-bcd4-0971c391f896"/>  

    <CurrentVersion value="0.0.0.1"/>  

    <WebSite value="http://note.do.com/"/>  

</UpdateResult>  

在解析之前,将该xml赋值给String变量xmlStr

2、解析UpdateResult的属性NeedUpdate,并把结果赋值给isNeedUpdate,解析FileUrl的value属性,并把结果赋值给FileUrl:

[java] view
plaincopy

XmlPullParser parser = Xml.newPullParser();  

parser.setInput(new StringReader(xmlStr));  

int event = parser.getEventType();  

while (event != XmlPullParser.END_DOCUMENT) {  

switch (event) {  

    case XmlPullParser.START_DOCUMENT:  

        break;  

    case XmlPullParser.START_TAG:  

        if ("UpdateResult".equals(parser.getName())) {  

            int count = parser.getAttributeCount();  

            for (int i = 0; i < count; i++) {  

                String key = parser.getAttributeName(i);  

                if ("NeedUpdate".equals(key)) {  

                    isNeedUpdate= "true".equals(parser.getAttributeValue(i));  

                }  

            }  

        } else if ("FileUrl".equals(parser.getName())) {  

                int count = parser.getAttributeCount();  

                for (int i = 0; i < count; i++) {  

                    String key = parser.getAttributeName(i);  

                    if ("value".equals(key)) {  

                        FileUrl = parser.getAttributeValue(i);  

                    }  

                }  

            }  

        break;  

    case XmlPullParser.END_TAG:  

        break;  

    }  

    event = parser.next();  

}  

主要用到类:org.xmlpull.v1.XmlPullParser和java.io.StringReader

针对实际应用到的一个xml字符串,进行解析,得到item的值。

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE boost_serialization>
<boost_serialization signature="serialization::archive" version="9">
<field class_id="0" tracking_level="0" version="0">
<count>1</count>
<item_version>0</item_version>
<item class_id="1" tracking_level="0" version="0">
<first>streams</first>
<second>0</second>
</item>
</field>

<RowCount>1</RowCount>
<rowdata class_id="2" tracking_level="0" version="0">
<count>1</count>
<item_version>0</item_version>
<item>{"res":{"Stream1":{"ip":"172.16.128.67","name":"20140909_ch0_h","app":"teach_app","vol":1,"type":1,"alias":"\u9ed8\u8ba4\u522b\u540d"},"Stream2":{"ip":"172.16.128.67","name":"20140909_ch1_h","app":"teach_app","vol":0,"type":1,"alias":"\u9ed8\u8ba4\u522b\u540d"},"Stream3":{"ip":"172.16.128.67","name":"20140909_ch2_h","app":"teach_app","vol":0,"type":1,"alias":"\u9ed8\u8ba4\u522b\u540d"},"Stream4":{"ip":"172.16.128.67","name":"20140909_ch3_h","app":"teach_app","vol":0,"type":1,"alias":"\u9ed8\u8ba4\u522b\u540d"}},"mov":{"Stream1":{"ip":"172.16.128.67","name":"20140909_ch4_h","app":"teach_app","vol":0,"type":1,"alias":"\u9ed8\u8ba4\u522b\u540d"}}}
</item>
</rowdata>
</boost_serialization>

package com.charein.util;

import java.io.StringReader;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;

import android.util.Log;
import android.util.Xml;

public class XmlParser {
private static String TAG = "XmlParser";
private String xmlString;

public boolean Parser(String xml) {

XmlPullParser parser = Xml.newPullParser();
try {
parser.setInput(new StringReader(xml));
} catch (XmlPullParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Log.d(TAG, "XmlPullParserException: " + e);
}

try {
int event = parser.getEventType();
while (event != XmlPullParser.END_DOCUMENT) {
switch (event) {
case XmlPullParser.START_DOCUMENT:
break;
case XmlPullParser.START_TAG:
if ("item".equals(parser.getName())) {
int count = parser.getAttributeCount();
if (count == 0) {
xmlString = parser.nextText();
return true;
}
}
break;
case XmlPullParser.END_TAG:
break;
}
event = parser.next();
}
} catch (Exception e) {
// TODO: handle exception
Log.e(TAG, "Exception: " + e);
return false;
}
return false;
}

public String getXmlString() {
return xmlString;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Android 解析xml pull