Xstream --- 转换器
来源:互联网 发布:蜜蜂软件的注册码 编辑:程序博客网 时间:2024/04/28 11:56
XStream允许从无到有写入转换器,这样开发人员可以编写一个完全新的实现,如何对象序列化到XML,反之亦然。 转换器接口提供了三种方法。
canConvert - 检查支持的对象类型的序列化。
marshal - 序列化对象到XML。
unmarshal - 从XML对象反序列化
package com.xstream.convert;
import java.util.ArrayList;
import java.util.List;
import com.thoughtworks.xstream.converters.Converter;
import com.thoughtworks.xstream.converters.MarshallingContext;
import com.thoughtworks.xstream.converters.UnmarshallingContext;
import com.thoughtworks.xstream.io.HierarchicalStreamReader;
import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
import com.xstream.vo1.Address;
import com.xstream.vo1.Addresses;
public class XstreamConvert implements Converter{
//检查支持的对象类型的序列化
public boolean canConvert(Class object) {
return object.equals(Addresses.class);
}
//序列化对象到XML
public void marshal(Object value, HierarchicalStreamWriter writer,MarshallingContext context) {
Addresses addresses = (Addresses) value;
List list = addresses.getListAdd();
writer.startNode("name");
writer.setValue(addresses.getListAdd().get(0).getPlace() + "," + addresses.getListAdd().get(0).getAddType());
writer.endNode();
}
//从XML对象反序列化
public Object unmarshal(HierarchicalStreamReader reader,
UnmarshallingContext context) {
reader.moveDown();
String[] nameparts = reader.getValue().split(",");
Addresses addresses = new Addresses(new ArrayList<Address>());
reader.moveUp();
return addresses;
}
}
package com.xstream.demo1;
import java.util.ArrayList;
import java.util.List;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;
import com.thoughtworks.xstream.io.xml.StaxDriver;
import com.xstream.convert.XstreamConvert;
import com.xstream.vo1.Address;
import com.xstream.vo1.Addresses;
public class XstreamConvertDemo {
public static void main(String[] args) {
XstreamConvertDemo tester = new XstreamConvertDemo();
XStream xstream = new XStream(new DomDriver());
Addresses addresses = tester.getAddressDetails();
xstream.autodetectAnnotations(true);
xstream.registerConverter(new XstreamConvert());
//Object to XML Conversion
String xml = xstream.toXML(addresses);
System.out.println(xml);
}
private static Addresses getAddressDetails(){
List<Address> list = new ArrayList<Address>();
Address address1 = new Address("t1", "p1");
Address address2 = new Address("t2", "p2");
list.add(address1);
list.add(address2);
Addresses addresses = new Addresses(list);
return addresses;
}
}
输出:
<com.xstream.vo1.Addresses>
<name>p1,t1</name>
</com.xstream.vo1.Addresses>
- Xstream --- 转换器
- Spring OXM-XStream转换器
- 手动实现XStream转换器工厂
- XStream注册自定义转换器进行类型转换
- XStream---Java对象和XML之间的转换器
- 开源dom框架xStream转换器(Converter)的基本用法
- xstream
- xstream
- Xstream
- XStream
- xstream
- XStream
- XStream
- Xstream
- xstream
- XStream
- XStream
- xstream
- 学习Maven之Properties Maven Plugin(编译时动态获取properties参数)
- 简单工厂模式
- Redis主从复制
- java学习日记_9:面向对象的概念以及思想
- C++ Options (Optimize Code)
- Xstream --- 转换器
- 【龙印】龙芯1c的gpio作为输入时的linux驱动
- makefile 常用命令
- kmp算法java代码
- cv2的几个常用函数及例子
- OpenCV 3.1.0 + opencv_contrib编译(Windows)
- Caffe CPU模式自己训练模型——MNIST数据集
- 构建高性能数据库缓存之redis主从复制
- 获取Android Contacts联系人信息