XStream的使用方法、简单使用方法

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

Android Studio中目前支持的Xstream最高版本是xstream-1.4.7.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


//设置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()+person.getPhoneno().toString()); 
               }           }      });}
 

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

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

运行结果:

Person{firstname=‘Joe‘, lastname=‘Walnes‘}[Phone{phoneno=0107654321}, Phone{phoneno=13800008888}]
时间: 2024-10-13 10:48:05

XStream的使用方法、简单使用方法的相关文章

MySQL笔记-最简单的方法来解决找不到mysqld.sock文件的问题

首先,环境:ubuntu 14.04,采用apt-get的方式安装的,手动安装可能路径设置稍有区别. 1.安装MySQL后,用命令行首次启动时发现找不到Mysqld.sock文件,提示: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2),如图: 2.网上的方法很多不实用,这里介绍一种最简单的方法来解决这个问题. # sudo /etc/i

图片转CAD最简单的方法用这个

想要将一张图片转换成CAD进行修改编辑该怎么办,如何操作?将图片转换成CAD可以帮助我们的了解图片各元素的信息,并且根据图片制作自己想要的CAD文件,那么图片转换CAD怎么转? 1.首先,请将迅捷CAD编辑器(官网下载:http://cad.xjpdf.com)下载安装到电脑上,借助于这款CAD编辑软件,我们可以完成图片转CAD工作. 2.软件下载安装完成后,请点击打开进入软件的操作界面中,然后点击文件--打开,添加要转换的图片文件. 3.在迅捷CAD编辑器中打开图片文件后,请在软件左上方菜单栏

php批量删除cookie的简单实现方法

这篇文章主要介绍了php批量删除cookie的简单实现方法,实例分析了删除单个cookie及数组遍历的方式批量删除cookie的技巧与相关注意事项,需要的朋友可以参考下 本文实例讲述了php批量删除cookie的简单实现方法.分享给大家供大家参考.具体实现方法如下: <?php //删除单个cookie:键值设置为空.时间设置为过期了的时间 setCookie("name","",time()-60); //删除多个cookie,采用遍历数组方式 foreac

如何用最简单的方法将PCweb改成适合各种设备的web

使web页面自适应设备大小 1)用一个<div>包围<body>的内容 2)该div属性的宽度设为100%   (宽度设为100%后,页面会随着设备窗口大小自动改变) 3)高度:通过window.innerHeight获得设备高度在通过jQuery的css()动态改变元素 (如果没有设高度,则页面高度会随着内容高度的变化而变化) 1 <style> 2 *{ 3 margin:0; 4 padding:0; 5 } 6 .knr{ 7 margin:0 auto; 8

找1~100之间素数的两种比较简单的方法

方法一:利用一个布尔类型的值的判断,优点想法更直接易懂 public static void main(String[] args) { for(int i=2;i<=100;i++){ boolean b=true; for(int n=2;n<i;n++){ if(i%n==0){ b=false; break; } } if(b==true){ System.out.print(i+"\t"); } } } 方法二:能被2和这个数本身以外的数整除的都不是素数.理解难但

CFileDialog的使用方法简单介绍

CFileDialog文件选择对话框的使用:首先构造一个对象并提供对应的參数,构造函数原型例如以下: CFileDialog::CFileDialog( BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName = NULL, DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, LPCTSTR lpszFilter = NULL, CWnd* pParen

Android反编译工具介绍与简单实用方法

Android反编译工具介绍与简单实用方法 Android反编译的目的无非就是为了看到APK的xml.资源和代码: 得到代码的方式:直接解压APK文件 --> 得到classes.dex文件 --> 使用 dex2jar classes.dex classes.jar生成jar文件 --> [可选的解压jar文件] -->使用XJad或者JDCompiler查看源代码 得到XML的方式: 方式1:直接解压APK文件 --> 通过axmlprinter工具查看XML文件(这种方

用jsonp来解决跨域问题的三种简单的方法

jsonp实现跨域的方法 使用ajax方法获取数据不能跨域,为了解决这个问题,普遍使用jsonp来实现跨域,下面是对jsonp方法的简单总结: 例子:假如想获取京东的评论的数据,可以在京东的评论面板打开network找到和ajax请求相关的有回调函数callback的请求url, 如找到一个url, 如: 在响应里可以找到回调函数对应的方法: 这是在服务器上写入的方法用来传输数据. 例如获取到的url为 https://club.jd.com/comment/productPageComment

JS中的对象和方法简单剖析

众所周知,在js中对象就是精髓,不理解对象就是不理解js. 那么什么事js中的对象呢? 在js中,几乎一切皆对象: Boolean ,String,Number可以是对象(或者说原生数据被认作对象): Dates ,Maths,Regexps,Arrays,Funcitons,当然Objects,这些都是对象: JS中,所有值,除了原生值,都是对象:这些原生值包括:strings,numbers('3.14'),true,false,null和undefined 对象是包含变量的变量,js变量可

TabHost 简单使用方法

package com.google.tabhost; import android.app.TabActivity; import android.os.Bundle; import android.view.LayoutInflater; import android.widget.TabHost; public class HelloTabHost extends TabActivity { /** Called when the activity is first created. */