Android Pull解析Xml字符串

1、要解析的xml格式如下:

[html]  view plain copy
  1. <UpdateResult NeedUpdate="true">  
  2.     <FileUrl value="http://download.note.com/res/6650fd66-551f-47b5-bcd4-0971c391f896"/>  
  3.     <CurrentVersion value="0.0.0.1"/>  
  4.     <WebSite value="http://note.do.com/"/>  
  5. </UpdateResult>  

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


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

[java]  view plain copy
  1. XmlPullParser parser = Xml.newPullParser();  
  2. parser.setInput(new StringReader(xmlStr));  
  3. int event = parser.getEventType();  
  4. while (event != XmlPullParser.END_DOCUMENT) {  
  5. switch (event) {  
  6.     case XmlPullParser.START_DOCUMENT:  
  7.         break;  
  8.     case XmlPullParser.START_TAG:  
  9.         if ("UpdateResult".equals(parser.getName())) {  
  10.             int count = parser.getAttributeCount();  
  11.             for (int i = 0; i < count; i++) {  
  12.                 String key = parser.getAttributeName(i);  
  13.                 if ("NeedUpdate".equals(key)) {  
  14.                     isNeedUpdate= "true".equals(parser.getAttributeValue(i));  
  15.                 }  
  16.             }  
  17.         } else if ("FileUrl".equals(parser.getName())) {  
  18.                 int count = parser.getAttributeCount();  
  19.                 for (int i = 0; i < count; i++) {  
  20.                     String key = parser.getAttributeName(i);  
  21.                     if ("value".equals(key)) {  
  22.                         FileUrl = parser.getAttributeValue(i);  
  23.                     }  
  24.                 }  
  25.             }  
  26.         break;  
  27.     case XmlPullParser.END_TAG:  
  28.         break;  
  29.     }  
  30.     event = parser.next();  
  31. }  

主要用到类: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;
	}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值