下面介绍的是在Android Studio中的使用

Android Studio中目前支持的Xstream最高版本是xstream-1.4.7.jar,大家可以在网上下载,我的是在开源中国项目中有这个jar包,我是直接将jar包放到libs中使用的,因为我尝试在build.gradle中通过complie的方法添加依赖,但是编译的时候还是不通过。

我使用的是okhttp的client。

下面介绍的是项目开发中从网络获取xml文件并解析成javaBean的方法。

1.网络服务器中的xml文件

<person name="johnson">
<firstname>Joe</firstname>
<lastname>Walnes</lastname>
<phone>
<phoneno>0107654321</phoneno>
</phone>
<phone>
<phoneno>13800008888</phoneno>
</phone>
</person>

2.     javaBean

/**
* Created by weizh_000 on 2016/8/16.
*/ //设置Person类在xml中的别名
@XStreamAlias("person")
public class Person {
//将name设置为XML person字段的 attribute
@XStreamAsAttribute()
private String firstname;
private String lastname;
//该变量不是xml中的一个字段,应去掉
@XStreamImplicit()
private List<Phone> phone = new ArrayList<Phone>();
@Override
public String toString() {
return "Person{" +
"firstname='" + firstname + '\'' +
", lastname='" + lastname + '\'' +
'}';
} public List<Phone> getPhoneno() {
return phone;
} public void setPhoneno(List<Phone> phone) {
this.phone = phone;
} class Phone{
String phoneno; @Override
public String toString() {
return "Phone{" +
"phoneno=" + phoneno +
'}';
}
}
}

3.使用

public void test() {
OkHttpClient okHttpClient = new OkHttpClient();//定义client
Request request = new Request.Builder().url("http://192.168.1.100:8080/test/test.xml").build();//定义request
okhttp3.Call call = okHttpClient.newCall(request);//用client使用call
call.enqueue(new okhttp3.Callback() {//异步请求网络数据
@Override
public void onFailure(okhttp3.Call call, IOException e) {//请求失败的情况
System.out.println("fail:");
e.printStackTrace();
} @Override
public void onResponse(okhttp3.Call call, okhttp3.Response response) throws IOException {//请求成功的情况
XStream xStream = new XStream(new DomDriver("UTF-8"));
          //对指定的类使用Annotations 进行序列化,这步非常关键
xStream.processAnnotations(Person.class);
if (response.isSuccessful()) {
String string = response.body().string();
Person person = (Person) xStream.fromXML(string);
System.out.println(person.toString());
System.out.println(person.getPhoneno().toString());
    }
    }
   });
}

其实也就这步关键而已,其他的不重要:

//对指定的类使用Annotations 进行序列化
   xstream.processAnnotations(Person.class);

运行结果:

Person{firstname='Joe', lastname='Walnes'}
[Phone{phoneno=0107654321}, Phone{phoneno=13800008888}]

XStream的使用方法、简单使用方法、xml的解析方法的更多相关文章

  1. 八、Android学习第七天——XML文件解析方法(转)

    (转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 八.Android学习第七天——XML文件解析方法 XML文件:exten ...

  2. XML 的解析方法

    四种XML解析方法: (1)Dom生成和解析XML文档 *解析器读入整个文档,然后构建一个驻留内存的树结构,然后代码就可以使用 DOM 接口来操作这个树结构.     * 优点:整个文档树在内存中,便 ...

  3. 又一种XML的解析方法

    [Fact(DisplayName="用户名为空")] public void Should_UsernameEmpty() { var paras = new Dictionar ...

  4. XML解析之DOM详解及与SAX解析方法的比较

    XML解析(DOM) XML文件解析方法介绍 我们所用到的NSXMLParser是采用SAX方法解析 SAX(Simple API for XML) 只能读,不能修改,只能顺序访问,适合解析大型XML ...

  5. JAVA 中XML的解析

    XML:  可扩展标记语言(extensible Markup Language) 用于标记电子文件使其具有结构性的标记语言.XML可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定 ...

  6. Java获取路径方法&相对路径读取xml文件方法

    (1).request.getRealPath("/");//不推荐使用获取工程的根路径 (2).request.getRealPath(request.getRequestURI ...

  7. Java解析XML三种常用方法

    1.使用DOM方式解析: package com.wzh.dom; import java.util.Iterator; import javax.xml.parsers.DocumentBuilde ...

  8. 解析Xml四种方法

    关键字:Java解析xml.解析xml四种方法.DOM.SAX.JDOM.DOM4j.XPath [引言] 目前在Java中用于解析XML的技术很多,主流的有DOM.SAX.JDOM.DOM4j,下文 ...

  9. C#中经常使用的几种读取XML文件的方法

    XML文件是一种经常使用的文件格式,比如WinForm里面的app.config以及Web程序中的web.config文件,还有很多重要的场所都有它的身影.Xml是Internet环境中跨平台的,依赖 ...

随机推荐

  1. Linux之VI搜索相关命令

    /abc, 向前查询abc ?abc, 向后查询abc n, 向前继续查询 N, 向后继续查询 老是忘记,简单记录下

  2. linux版本选择

    桌面系统           -- Ubuntu,开发人员也喜欢用Ubuntu 服务器端           -- RHEL或CentOS,RHEL要钱 对安全要求很高  -- Decian或Free ...

  3. 第六十七节,html表单元素

    html表单元素 学习要点: 1.表单元素总汇 2.表单元素解析 本章主要探讨HTML5中表单元素,表单元素用于获取用户的输入数据.   一.表单元素总汇 HTML5的表单中,提供了各种可供用户输入的 ...

  4. String.getBytes()--->字符串转字节数组

    是String的一个方法String的getBytes()方法是得到一个系统默认的编码格式的字节数组getBytes("utf-8") 得到一个UTF-8格式的字节数组把Strin ...

  5. 本地Fiddler传递XML格式数据,调试微信功能。

    一,调试关注和取消关注 User-Agent: Fiddler Host: localhost:4561Content-Type: application/json; charset=utf-8 Co ...

  6. Google科学家前腾讯副总裁吴军将出席第二届万物互联创新大会

    当越来越多的科技产品注入互联网的基因,"万物互联"的模式悄然兴起.第二届万物互联创新大会(B12大会)将于2016-11-13日在杭州市余杭区隆重召开.Google科学家前腾讯副总 ...

  7. Gdevops2016年全球敏捷运维峰会【上海站】嘉宾阵容

    2016年全球敏捷运维峰会(Gdevops, Global Devops Summit)将于2016年在杭州.北京.广州.上海四城全面启动,本次峰会旨在搭建一个开发者与 运维者沟通交流的平台,围绕各种 ...

  8. 在magento里把查询语句转换称sql语句

    在magento里把查询语句转换称sql语句 $order->getSelectsql(true); order为对象.

  9. 阮一峰:jQuery的几篇文章

    jQuery的设计思想:http://www.ruanyifeng.com/blog/2011/07/jquery_fundamentals.html jQuery的最佳实践:http://www.r ...

  10. ZUFEOJ 2395 天棋哥哥大战AlphGo

    Description3月15日,人机围棋大战巅峰对决在韩国首尔落下帷幕.五番棋的最后一局中,韩国著名棋手李世乭尽管与人工智能“AlphaGo”缠斗至官子阶段,但在双双进入读秒后最终还是投子认输,以总 ...