XStream的使用方法、简单使用方法、xml的解析方法
下面介绍的是在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的解析方法的更多相关文章
- 八、Android学习第七天——XML文件解析方法(转)
(转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 八.Android学习第七天——XML文件解析方法 XML文件:exten ...
- XML 的解析方法
四种XML解析方法: (1)Dom生成和解析XML文档 *解析器读入整个文档,然后构建一个驻留内存的树结构,然后代码就可以使用 DOM 接口来操作这个树结构. * 优点:整个文档树在内存中,便 ...
- 又一种XML的解析方法
[Fact(DisplayName="用户名为空")] public void Should_UsernameEmpty() { var paras = new Dictionar ...
- XML解析之DOM详解及与SAX解析方法的比较
XML解析(DOM) XML文件解析方法介绍 我们所用到的NSXMLParser是采用SAX方法解析 SAX(Simple API for XML) 只能读,不能修改,只能顺序访问,适合解析大型XML ...
- JAVA 中XML的解析
XML: 可扩展标记语言(extensible Markup Language) 用于标记电子文件使其具有结构性的标记语言.XML可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定 ...
- Java获取路径方法&相对路径读取xml文件方法
(1).request.getRealPath("/");//不推荐使用获取工程的根路径 (2).request.getRealPath(request.getRequestURI ...
- Java解析XML三种常用方法
1.使用DOM方式解析: package com.wzh.dom; import java.util.Iterator; import javax.xml.parsers.DocumentBuilde ...
- 解析Xml四种方法
关键字:Java解析xml.解析xml四种方法.DOM.SAX.JDOM.DOM4j.XPath [引言] 目前在Java中用于解析XML的技术很多,主流的有DOM.SAX.JDOM.DOM4j,下文 ...
- C#中经常使用的几种读取XML文件的方法
XML文件是一种经常使用的文件格式,比如WinForm里面的app.config以及Web程序中的web.config文件,还有很多重要的场所都有它的身影.Xml是Internet环境中跨平台的,依赖 ...
随机推荐
- neutron openvswitch agent实现安全组的方法
关于openstack安全组,采用一问一答的形式记录如下 1. 是加载在计算节点的还是网络节点的? 是加载在计算节点的 2. 是使用iptable规则实现的吗? M版的neutron实现了openvs ...
- OBIEE 12C
OBIEE 12C安装配置 oracle官网下载BIEE12C 在虚拟机上安装 linux 在SQLPLUS启动和停止Oracle数据库 重启oracle数据库 cmd->1.lsnrctl s ...
- pull类型消息中间件-消息服务端(三)
部署架构 消息存储 存储结构 MetaQ的存储结构是一种物理队列+逻辑队列的结构.如下图所示: Producer生产消息,根据消息的topic选择topic对应某一个分区,然后发送到这个分区对应的Br ...
- 九章lintcode作业题
1 - 从strStr谈面试技巧与代码风格 必做题: 13.字符串查找 要求:如题 思路:(自写AC)双重循环,内循环读完则成功 还可以用Rabin,KMP算法等 public int strStr( ...
- 使用PhotoShop
详细请看:http://blog.sina.com.cn/s/blog_73dc36510101ahim.html
- swift 学习线路
//从(GCD,动画,通知,KVO..) 到闭包 到单子 再到 promise ,再到 reactive //从可选类型 到可选绑定 ,隐私可选解包 ,动态绑定,nil 聚合运算符 再到可选链 再到S ...
- scale相关设置—颜色设置
颜色设置,在R的可视化中,应该算是相对比较重要的一项内容,如何把握颜色,很大程度上影响图形的展现效果. 在ggplot的scale设置中,颜色相关的函数较多: scale_fill/colour_hu ...
- 8.多线程和Socket通信
一.多线程 1.进程的概念: 进程就是应用程序的执行实例,有独立的内存空间和系统资源.当一个应用程序没有执行的时候,它就不是一个进程. 2.进行的特征: (1)动态性:动态产生动态消亡. (2)并 ...
- 二维小波包分解wpdec2
load woman; %小波包2尺度(层)分解 t=wpdec2(X,2,'haar'); plot(t);%绘制小波包树 %提取(1,2)处结点.也可以点击上图结点,观察 c12=wpcoef(t ...
- OpenLayer
<html> <head> <meta charset="utf-8"> <title>GIS开发样例-V1.0</title ...