展会信息港展会大全

android下通过xstream解析xml格式信息
来源:互联网   发布日期:2016-01-13 21:59:09   浏览:1701次  

导读:下面是一个xml文件的格式示例。12 NetGear 614v9无线路由器3 2009-10-27 00:00:00.0 CST4下载或者访问该xml文件:[Download not found]如果解析上面的xml文件呢?这里选用了xstream,网址:http://xstream......

下面是一个xml文件的格式示例。

1

2 NetGear 614v9无线路由器

3 2009-10-27 00:00:00.0 CST

4

下载或者访问该xml文件:[Download not found]

如果解析上面的xml文件呢?这里选用了xstream,网址:

http://xstream.codehaus.org/

xstream可以自动解析文件,并且根据xml数据实例化javabean。如果不这样,需要手工编写SAX API代码解析。

首先编写了一个对应的Product的javabean:

01package com.easymorse;

02

03import java.util.Date;

04

05public class Product {

06 @Override

07 public String toString() {

08 return Product [createTime=" + createTime.toLocaleString() + ", name=" + name + "] ;

09 }

10

11 private String name;

12

13 public String getName() {

14 return name;

15 }

16

17 public void setName(String name) {

18 this.name = name;

19 }

20

21 public Date getCreateTime() {

22 return createTime;

23 }

24

25 public void setCreateTime(Date createTime) {

26 this.createTime = createTime;

27 }

28

29 private Date createTime;

30}

然后,需要类似这样调用xstream的代码:

01package com.easymorse;

02

03import java.io.BufferedReader;

04import java.io.InputStreamReader;

05

06import org.apache.http.HttpResponse;

07import org.apache.http.client.HttpClient;

08import org.apache.http.client.methods.HttpGet;

09import org.apache.http.impl.client.DefaultHttpClient;

10

11import android.app.Activity;

12import android.os.Bundle;

13import android.util.Log;

14import android.widget.TextView;

15

16import com.thoughtworks.xstream.XStream;

17

18public class NextActivity extends Activity {

19 private TextView textView;

20 @Override

21 protected void onCreate(Bundle savedInstanceState) {

22 super.onCreate(savedInstanceState);

23 this.setContentView(R.layout.next_activity);

24 this.textView=(TextView) this.findViewById(R.id.TextView01);

25

26 HttpClient client = new DefaultHttpClient();

27 StringBuilder builder = new StringBuilder();

28

29 HttpGet get = new HttpGet(

30http://marshal.easymorse.com/wp-content/uploads/2009/10/product2.xml );

31 try {

32 HttpResponse response = client.execute(get);

33 BufferedReader reader = new BufferedReader(newInputStreamReader(

34 response.getEntity().getContent()));

35 for(String s = reader.readLine(); s != null; s = reader.readLine()) {

36 builder.append(s);

37 }

38 Log.v( response , product: +builder.toString());

39 XStream xstream = new XStream();

40 xstream.alias( product , Product.class);

41 Product product=(Product) xstream.fromXML(builder.toString());

42 this.textView.setText(product.toString());

43 } catch (Exception e) {

44 e.printStackTrace();

45 }

46 }

47}

执行NextActivity的截图:

从服务器端返回的中文内容能够正确解码。不过,如果通过eclipse插件中的ddms日志,看到的是乱码,估计和日志或者eclipse插件默认字符集有关 。

另外,想要使用xstream需要引入xstream包。在这里xstream又依赖xpp3用于对xml解析。xpp3的网址:

http://www.extreme.indiana.edu/xgws/xsoap/xpp/

可以在这里下载到最新的xpp3分发包:

http://www.extreme.indiana.edu/dist/java-repository/xpp3/distributions/

然后解压缩,将其中的xpp3_min-*.jar导入项目即可。

或者也可以选择不依赖xpp3包,这样可以节省24K左右的空间。需要实例化XStream时:

1XStream xstream = new XStream(new DomDriver());

另外,日期格式用:

2009-10-27 00:00:00.0 CST

是为了直接转型方面,如果比较复杂,需要实现xstream的转型接口做定制实现:

http://xstream.codehaus.org/converter-tutorial.html

赞助本站

人工智能实验室

相关热词: xstream 解析xml

AiLab云推荐
推荐内容
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港