下面介绍的是在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的文件/目录的权限

    文件类型 权限 属主 属组 目录名/文件名drwx------ 2 alice girls 4096 9月 25 11:33 alicedrwx------ 2 rose girls 4096 9月 ...

  2. MarkDown初遇

    MarkDown初遇 纠结盘桓许久,由于那只胖纸,最终决定再次捡起博客这个东东,记录记录生活中.心灵里的点点滴滴. 寻觅的过程中忽然发现MarkDown这个东东,查了查,学习成本不高,简洁而标准,关键 ...

  3. java复习 --集合类

    List接口:可以存放重复内容: set接口:不能存放重复内容,重复内容依靠hashcode和equal两个方法来区分: Queue:队列: SortedSet接口:对集合中的数据进行排序:   Li ...

  4. Android 发送HTTP GET POST 请求以及通过 MultipartEntityBuilder 上传文件(二)

    Android 发送HTTP GET POST 请求以及通过 MultipartEntityBuilder 上传文件第二版 上次粗略的写了相同功能的代码,这次整理修复了之前的一些BUG,结构也大量修改 ...

  5. 关于百度地图API (持续跟新)

    一.初始化地图显示不在正中间,出现偏移 问题描述与解决办法: 代码: body, html, #allmap { width: 100%; height: 100%; overflow: hidden ...

  6. 如何自定义JSR-303标准的validator

    在web应用中为了保证数据的有效性而对用户提交的表单数据是必需的,而前台客户端的验证例如javascript并不总是那么安全和可靠,这样我们就需要一个健壮的后台验证框架来处理这个问题.好在java发布 ...

  7. 取URL得值

    有这样一个URL:http://item.taobao.com/item.htm?a=1&b=2&c=&d=xxx&e,请写一段JS程序提取URL中的各个GET参数(参 ...

  8. 获取当前设备的IP地址

    头文件: #import <ifaddrs.h> #import <arpa/inet.h> #import <net/if.h> 宏定义: #define IOS ...

  9. javascript注释规范

    注释在代码编写过程中的重要性,写代码超过半年的就能深深的体会到.没有注释的代码都不是好代码.为了别人学习,同时为了自己以后对代码进行'升级',看看js/javascript代码注释规范与示例.来自:h ...

  10. install font

    哪些字体包含国际音标呢? 在微软的Windows与Office的2000或以上版本中分别带有Lucida Sans Unicode和Arial Unicode MS两种字体(以下分别简称LSU和AUM ...