用 XStream 序列化/反序列化 XML 为 Java 对象(实例)
用 XStream 序列化/反序列化 XML 为 Java 对象(实例)
Posted on 2007-06-05 19:06 Stephen Wong 阅读(1224) 评论(0) 编辑 收藏 网摘 所属分类: 数据持久化、序列化 , WebService , Java
XStream 项目主页 :
http://xstream.codehaus.org/
需要 lib :
xstream-1.2.2.jar
xpp3_min-1.1.3.4.O.jar
这是 2007.5.24 打包的 lib
测试主程序 :
import com.thoughtworks.xstream. * ;
import java.util. * ;
/**
* 测试 XStream 序列化和反序列化
* @author stephen.wjj
*
*/
public class XStreamTest {
/**
* 测试序列化
*/
public static void TestSerializer(){
System.out.println( " ===== Testing serializer ===== " );
Person p1 = new Person();
p1.setName( " AAA " );
Person p2 = new Person();
p2.setName( " BBB " );
Person p3 = new Person();
p3.setName( " CCC " );
Group g = new Group();
g.getPersons().add(p1);
g.getPersons().add(p2);
g.getPersons().add(p3);
g.setName( " KFC " );
XStream xstream = new XStream();
// 声明标记名称对应的 Java 类
xstream.alias( " group " , Group. class );
xstream.alias( " person " , Person. class );
// 把 Group 的 name 属性视为 XML 属性
xstream.useAttributeFor(Group. class , " name " );
// 忽略 XML 中的 <persons></persons> 标记
xstream.addImplicitCollection(Group. class , " persons " );
System.out.println(xstream.toXML(g));
}
/**
* 测试反序列化
*/
public static void TestDeserializer(){
System.out.println( " ===== Testing deserializer ===== " );
String xml = " <group name=/ " KFC/ " ><person><name>AAA</name></person><person><name>BBB</name></person><person><name>CCC</name></person></group> " ;
XStream xstream = new XStream();
// 声明标记名称对应的 Java 类
xstream.alias( " group " , Group. class );
xstream.alias( " person " , Person. class );
// 把 Group 的 name 属性视为 XML 属性
xstream.useAttributeFor(Group. class , " name " );
// 忽略 XML 中的 <persons></persons> 标记
xstream.addImplicitCollection(Group. class , " persons " );
Group g = (Group) xstream.fromXML(xml);
System.out.println( " Group name = " + g.getName());
System.out.println( " Group has persons = " + g.getPersons().size());
System.out.println( " Group persons: " );
if (g.getPersons().size() > 0 ){
Iterator it = g.getPersons().iterator();
while (it.hasNext()){
Person p = (Person)it.next();
if (p != null ){
System.out.println(p.getName());
} else {
System.out.println( " Err! person instance is null! " );
}
}
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
TestSerializer();
TestDeserializer();
}
}
Console 输出 :
<group name = " KFC " >
<person>
<name>AAA</name>
</person>
<person>
<name>BBB</name>
</person>
<person>
<name>CCC</name>
</person>
</group>
===== Testing deserializer =====
Group name = KFC
Group has persons = 3
Group persons:
AAA
BBB
CCC
注:
用于反序列化的字符串(String xml = "...")中带有 XML 头部时不会影响结果
用于序列化的实体类 :
Group
import java.util. * ;
/**
* 包含若干 Person 的 Group
* @author stephen
*
*/
public class Group {
/**
* Group名称<br>
* 需求规定这是 XML 中的一个属性
*/
private String name;
/**
* 需求规定这是一堆若干数量的 person 标记
*/
private List persons = new ArrayList();
public String getName() {
return name;
}
public void setName(String name) {
this .name = name;
}
public List getPersons() {
return persons;
}
public void setPersons(List persons) {
this .persons = persons;
}
}
Person
package org.stephencat.test;
/**
* Group 里面的 Person
* @author stephen
*
*/
public class Person {
/**
* 需求规定这是一个 name 标记
*/
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this .name = name;
}
}
用 XStream 序列化/反序列化 XML 为 Java 对象(实例)相关推荐
- 将Java对象序列化成XML格式,将XML反序列化还原为Java对象
摘要:将Java对象序列化成XML格式,将XML反序列化还原为Java对象. 一:创建Maven工程,引入xstream依赖: <!--xstream--><dependency&g ...
- java xml amp_Javaamp;Xml教程(十一)JAXB实现XML与Java对象转换
JAXB是Java Architecture for XML Binding的缩写,用于在Java类与XML之间建立映射,可以帮助开发人员非常方便的將XML和Java对象进行相互转换. 本文以一个简单 ...
- JavaXml教程(十一)JAXB实现XML与Java对象转换
JAXB是Java Architecture for XML Binding的缩写,用于在Java类与XML之间建立映射,能够帮助开发者很方便的將XML和Java对象进行相互转换. 本文以一个简单的例 ...
- 使用castor实现xml和java对象的转换
对于xml和java对象的转换这里用castor进行转换,当然还有别的方式 方式一:castor和xml映射文件配合 首先提供需要解析的XML(内容不重要,重要的是格式) <?xml versi ...
- java非闭合xml转对象,不规矩的xml与JAVA对象互相转换的小技巧-使用Marshaller
摘要:将XML文档与JAVA对象互转是很常见的需求,如果XML定义很规整这很好实现.然而在现实中"不规矩"的XML可能更常见,Marshaller便无能为力了吗?下面是一个小技巧, ...
- xml与java对象互转
摘要:将XML文档与JAVA对象互转是很常见的需求,如果XML定义很规整这很好实现.然而在现实中"不规矩"的XML可能更常见,Marshaller便无能为力了吗?下面是一个小技巧, ...
- digester java_[jakarta-commons] 使用Digester解释xml获取java对象(代码入注规则 或 配置规则 任你选!)...
# re: [jakarta-commons] 使用Digester解释xml获取java对象(代码入注规则 或 配置规则 任你选!) 2009-11-09 10:27 | Java小子 楼主,运行起 ...
- 判断Java 对象实例是否死亡
垃圾收集器与内存分配策略参考目录: 1.判断Java 对象实例是否死亡 2. Java 中的四种引用 3.垃圾收集算法 4. Java9中的GC 调优 5.内存分配与回收策略 在进入主题之前,我们要先 ...
- java对象实例_深入理解Java对象实例生成的例子!(转)
深入理解Java对象实例生成的例子!(转)[@more@]代码如下: class A { public int Avar; public A() { System.out.println(" ...
最新文章
- Java 晋升必会的 70 道 「Spring 全家桶」高频面试题
- 0909 初识操作系统
- 第19讲:Pyppeteer 爬取实战
- no amd graphics driver怎么解决_《英雄联盟手游》卡顿怎么解决 游戏设置优化教程...
- visual studio for mac的离线安装初体验
- 微模式重金招聘高级图像算法工程师
- Android 切换卡(TabWidget)
- 写给自己,梳理一下我现在对前端知识结构的理解
- python21天打卡Day12--for循环,列表推导式-构建列表
- html在线编辑器 哪个好用,可视化HTML富文本编辑器有哪些?哪个好用?
- laypage分页java例子_layPage分页示例
- Socket(服务器端)通信连接失败解决方法
- SAS笔记#通过TABULATE过程制作汇总报表
- linux分区拓展容量,Linux系统分区容量扩充的方法
- wps插入C/C++代码
- 电流互感器的一些计算
- denoiser降噪实例
- 关于 watched variable changed 异常的详解
- (科软)高级软件工程课程总结
- [激光原理与应用-65]:激光器-器件 - 多模光纤(宽频光纤)、单模光纤的原理与区别
热门文章
- python 靶心_手把手教你使用Python实战反欺诈模型|原理+代码
- 【PHPWord】TextRun
- mysql 添加table_mysql数据库对table的增删改查
- python输入列表方法_Python用input输入列表的方法
- 基于ip地址的客户识别原理_使用 LVS 实现负载均衡原理及安装配置
- linux php7扩展查看,linux安装PHP7以及扩展
- python分类流程_文本分类指南:你真的要错过 Python 吗?
- mqttjar包_GitHub - a-voyager/MqttLib: Mqtt 通信封装库.
- 第二周Access总结
- Delphi 2010 secondsBetween Bug