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的值。
[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中pull解析和生成xml数据到一个字符串中
- Android中pull解析和生成xml数据到一个字符串中
- android之pull解析XML
- bak 6.android xml解析 XmlPullParser的使用.
- Android 如何解析Xml字符串
- android-XML解析Dom,Sax,Pull
- Android pull解析XML数据
- Android Pull方式解析XML
- Hello Android - PULL方式解析XML
- Android解析XML之XmlPullParser
- android中使用SAX, DOM, 或者pull 来解析XML文档
- android xml解析之PULL解析
- android_xml解析之 使用PULL读取XML文件 .
- android 使用 pull 解析xml文件
- Android XML解析学习——Pull方式
- Android XML解析学习——Pull方式
- android中的三种xml解析方法---sax解析,pull解析,dom
- Android之PULL解析和生成XML
- android使用pull的方式解析xml
- Android采用PULL解析XML文档与写成XML文档