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 ...
随机推荐
- 关于 width;height
IE Firefox Chrome Safari window(width|height) no yes yes document.body document.documentElement 网页 ...
- scroller
sh做的js控件. 另外内部被scroller包裹的div不可以定位成absolute,会撑不出高度. 上面只是使用的注意事项. 很佩服人家能封装出这样的控件. 如果我也能写得出来就能毕业了,也不用担 ...
- h.264 scanning process for transform coefficients
宏块在经过变换.量化后,得到大小为4x4或者8x8的矩阵,矩阵中的数据被称为transform coefficient levels.这些level在后面会被用于熵编码,因此我们需要把矩阵按照一定顺序 ...
- MFC 仿QQ聊天软件(黄花寒)
http://blog.csdn.net/lh844386434/article/details/6655080 http://download.csdn.net/download/lh8443864 ...
- HTML5区域范围文本框实例页面
CSS代码: input { font-size: 14px; font-weight: bold; } input[type=range]:before { content: attr(min); ...
- Spring Batch系列总括(转载)
最近一个项目在使用SpringBatch框架做一个电子商务平台的批处理.网上资料很有限,尤其是中文资料更是少之又少,官网上的文档也只是讲一些入门的基础知识,大部分高级特性都是一笔带过,讲解的很不彻底, ...
- mysql 累加排序求名次
自己做的一个小项目里需要用mysql计算一些信息. mysql中的 表如下(注:表中数据都是测试数据,随机生成的) mysql> select * from shake_log; +-----+ ...
- bzoj2821
其实和bzoj2724是一样的都是先处理多个块的答案,然后多余部分暴力空间要注意一下,还是O(nsqrt(n)); ..,..] of longint; g:..,..] of longint; a, ...
- BZOJ1610: [Usaco2008 Feb]Line连线游戏
1610: [Usaco2008 Feb]Line连线游戏 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 1301 Solved: 571[Submit ...
- Linux驱动的两种加载方式过程分析
一.概念简述 在Linux下可以通过两种方式加载驱动程序:静态加载和动态加载. 静态加载就是把驱动程序直接编译进内核,系统启动后可以直接调用.静态加载的缺点是调试起来比较麻烦,每次修改一个地方都要重新 ...