java对象与xml相互转换 ---- xstream
XStream是一个Java对象和XML相互转换的工具,很好很强大。提供了所有的基础类型、数组、集合等类型直接转换的支持。
XStream中的核心类就是XStream类,一般来说,熟悉这个类基本就够用了。
由于XStream.jar依赖于xmlpull.jar 所以,需将这两个jar一同导入。
下载地址 : https://pan.baidu.com/s/1eSpZs3o#path=%252F%25E5%25B7%25A5%25E5%2585%25B7jar
别名的配置是非常重要的,但是其中有些细节问题很重要。
package com.test;
public class Freind {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Freind [name=" + name + ", age=" + age + "]";
}
}
package com.test;
import java.util.List;
public class Person {
private int id;
private String name;
private List<Freind> fav;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<Freind> getFav() {
return fav;
}
public void setFav(List<Freind> fav) {
this.fav = fav;
}
@Override
public String toString() {
return "Person [id=" + id + ", name=" + name + ", fav=" + fav + "]";
}
}
测试类 :
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List; import org.apache.commons.io.FileUtils; import com.test.Freind;
import com.test.Person;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver; public class XstreamTest { public static void main(String[] args) throws IOException {
XStream stream = new XStream(new DomDriver());
Person pr = new Person(); pr.setId();
pr.setName("张三");
List<Freind> favs = new ArrayList<Freind>();
for(int i = ; i < ; i++) {
Freind fd = new Freind();
fd.setAge(i);
fd.setName("混混" + i);
favs.add(fd);
}
pr.setFav(favs); System.out.println("-------------起别名前-----------------");
System.out.println(stream.toXML(pr));
System.out.println("-------------起别名后-----------------");
//类起别名
stream.alias("person", pr.getClass());
stream.alias("freind", Freind.class); System.out.println(stream.toXML(pr)); System.out.println("--------friend字段当属性处理---------");
//字段“name”当属性处理
stream.useAttributeFor(Freind.class, "name");
System.out.println(stream.toXML(pr)); System.out.println("-------------xml转java对象-----------------"); Person result = (Person) stream.fromXML(stream.toXML(pr));
System.out.println(result.toString());
}
}
输出结果 :
-------------起别名前-----------------
<com.test.Person>
<id></id>
<name>张三</name>
<fav>
<com.test.Freind>
<name>混混18</name>
<age></age>
</com.test.Freind>
<com.test.Freind>
<name>混混19</name>
<age></age>
</com.test.Freind>
</fav>
</com.test.Person>
-------------起别名后-----------------
<person>
<id></id>
<name>张三</name>
<fav>
<freind>
<name>混混18</name>
<age></age>
</freind>
<freind>
<name>混混19</name>
<age></age>
</freind>
</fav>
</person>
--------friend字段当属性处理---------
<person>
<id></id>
<name>张三</name>
<fav>
<freind name="混混18">
<age></age>
</freind>
<freind name="混混19">
<age></age>
</freind>
</fav>
</person>
-------------xml转java对象-----------------
Person [id=, name=张三, fav=[Freind [name=混混18, age=], Freind [name=混混19, age=]]]
java对象与xml相互转换 ---- xstream的更多相关文章
- 玩转Java对象和XML相互转换
最近在项目中一直出现Java对象和XML之间的相互转换,一开始由于项目很庞大,我又是临时调度过去,导致在按照项目组长的要求进行写代码的同时,总是在这块云里雾里,最近才慢慢开始搞清楚项目中具体的使用缘由 ...
- java对象与xml相互转换工具类
public class XmlHelper { /** * Object转XML * * @param object * @return * @throws Exception */ public ...
- 使用XStream注解实现Java对象与XML互相转换的代码示例
本文记录一下使用xstream这个api的注解特性对Java对象与XML字符串相互转换的一些代码示例. 我们很多人都处理过XML文件,也有很多非常成熟的第三方开源软件.如:jdom.dom4j等 ...
- JAVA对象和XML文档、原来他们之间还有这一出
最近项目开发中遇到一个问题,访问接口不再通过url地址请求的方式,而是 通过socket发送xml格式的报文到指定服务器来进行信息的统一认证.. 因此组装xml格式的报文字符串以及解析服务器返回的xm ...
- java socket报文通信(三)java对象和xml格式文件的相互转换
前两节讲了socket服务端,客户端的建立以及报文的封装.今天就来讲一下java对象和xml格式文件的相互转换. 上一节中我们列举了一个报文格式,其实我们可以理解为其实就是一个字符串.但是我们不可能每 ...
- JSON对象与XML相互转换工具类
依赖jar <dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifactId ...
- 通过JAXB完成Java对象与XML之间的转换
Java对象转换XML的过程叫marshal. XML转换到Java对象的过程叫unmarshal. 一.Java对象转化为XML 这里省略getter和setter方法 通过标注@XMLRootEl ...
- java对象与XML相互转化
起因 最近在公司做了一次webservice相关的任务,其中我最敢兴趣的就是webservice接受到XML对应的流以后是如何方便的转化成java对象,而java对象又是如何生成对应的XML的. 目的 ...
- JAXB 实现java对象与xml之间互相转换
首先熟悉一下JAXB实现对象与xml互转时常用的一些注解使用: 1.@XmlRootElement,用于类级别的注解,对应xml的跟元素.通过name属性定义这个根节点的名称. 2.@XmlAcces ...
随机推荐
- iOS获取图片的Base64String,兼容Android,java,web,jpg(jpeg),png
呃呃呃……需求的来源又是同学,对!又是! 废话不哆嗦,怎么把一张图在iOS上转一个Base64String出来,稍微了解的,或者随便搜一下,都能搞定一大堆,但是!!!! 自己(iOS)转自己用,完全没 ...
- Ubuntu小技巧——怎样安装谷歌Chrome浏览器
对于刚刚开始使用Ubuntu并想安装谷歌Chrome浏览器的新用户来说,本文所介绍的方法是最快捷的.在Ubuntu上安装谷歌Chrome的方法有很多.一些用户喜欢直接在谷歌Chrome下载页面获得 d ...
- KeilC51常用功能模块使用说明
本文档包括单片机系统中常用到的时钟中断.通讯及键盘扫描等模块(见所附源程序)的说明.这些模块使用前后台系统模型.为达到最大的灵活性, 需要在用户工程中定义config.h文件, 在其中定义各模块可选参 ...
- Spring dataSource
1.何为dataSource DataSource 接口是 JDBC 2.0 API 中的新增内容,它提供了连接到数据源的另一种方法. 作为 DriverManager 工具的替代项,DataSour ...
- 14.5.4 Phantom Rows 幻影行
14.5.4 Phantom Rows 幻影行 所谓的幻读问题发生在一个事务 当相同的查询产生不同的结果集在不同的时间. 例如,如果一个SELECT 是执行2次,但是第2次返回的时间不第一次返回不同, ...
- 【HDOJ】2988 Dark roads
最小生成树. /* */ #include <iostream> #include <string> #include <map> #include <que ...
- 【HDOJ】2830 Matrix Swapping II
简单DP. /* 2830 */ #include <iostream> #include <string> #include <map> #include < ...
- 【HDOJ】2795 Billboard
线段树.注意h范围(小于等于n). #include <stdio.h> #include <string.h> #define MAXN 200005 #define lso ...
- 在多台服务器上简单实现Redis的数据主从复制
Redis的主从复制功能非常强大,一个master可以拥有多个slave,而一个slave又可以拥有多个slave,如此下去,形成了强大的多级服务器集群架构.下面我演示下怎样在多台服务器上 ...
- C#在ASP.NET4.5框架下的首次网页应用
运行效果预览: 先看实践应用要求: 1.编写一个函数,用于计算1!+2!+3!+4!+5!,在控制台或页面输出运行结果. 2.在控制台或页面输出九九乘法表. 3.输入10个以内的整数,输出该组整数的降 ...