作者:黄少存,叩丁狼高级讲师。原创文章,转载请注明出处。
介绍:
XStream是一种 OXMapping 技术,Object XML Mapping 对象和 XML 的映射处理.
用来处理 XML 文件序列化的小框架,将 JavaBean 序列化为 XML,或将 XML 反序列化成对象,不需要其它辅助类和映射文件,使得XML序列化和反序列化不再繁琐。适用于使用 XML 做数据传输的接口书写和数据传输.
虽然现在很多框架已经拥有 XML 自动转对象的做法,不过对于 xml 数据传输的操作还是会使用这些小框架来将对象转为 xml 进行传输.以下咱就来快速学习下 XStream 吧.
快速引入
官网下载 jar 包: http://x-stream.github.io/download.html
快速开始
接下来我们来做个简单的例子快速入手,到这里咱们都已经知道此框架可以做对象和 xml 的映射,接下来咱们先引入刚下来的 jar包,再创建一个User类让我们先拥有对象.
@Getter // 生成 getter 方法
@Setter // 生成 setter 方法
@ToString // 成成toString 方法
@AllArgsConstructor // 全参构造器
@NoArgsConstructor // 无参构造器
public class User {
private String username;
private Integer age;
private String email;
}
以上为 User 类的创建,使用 lombok 生成 getter 和 setter 方法和构造器.
接下来我们就可以使用XStream来将对象转为xml了.废话不多说,上代码.
@Test
public void testQuickStart() throws Exception {
// 创建 XStream 对象
XStream xStream = new XStream(new StaxDriver());
// 创建User对象
User user = new User("willie", 18, "willie@wolfcode.cn");
// 对象转入xml
String xml = xStream.toXML(user);
System.out.println(xml);
// 同步 xml 字符串到xml文件中
// TransformerUtil.transform(xml,new File("user.xml"));
}
输出结果
<?xml version="1.0" ?><cn.wolfcode.xstream.__01__quickstart.User><username>willie</username><age>18</age><email>willie@wolfcode.cn</email></cn.wolfcode.xstream.__01__quickstart.User>
怎样,是不是简单的不像话.赶紧 get 走.
如果想把 xml 字符串保存到文件中,只需要使用同步类 Transformer 就ok,上代码.
public class TransformerUtil {
public static void transform(String xml,File file) throws Exception{
Transformer transformer = TransformerFactory.newInstance().newTransformer();
// 将字符串xml转为Source对象
InputSource is = new InputSource(new ByteArrayInputStream(xml.getBytes()));
Source xmlSource = new SAXSource(is);
// 同步操作
transformer.transform(xmlSource, new StreamResult(file));
}
}
xml 文件如下
<?xml version="1.0" encoding="UTF-8"?>
<cn.wolfcode.xstream.__01__quickstart.User>
<username>willie</username>
<age>18</age>
<email>willie@wolfcode.cn</email>
</cn.wolfcode.xstream.__01__quickstart.User>
通过生成的结果咱们可以看得出来转化的方式如下
- 类的全限定名作为xml的跟
- 属性名作为子元素
- 属性值作为元素的内容
ok,自此对象转 xml 的操作咱已经搞定,接下来咱还需要来看下xml转对象,其实这也也非常的简单,不啰嗦,上代码.
@Test
public void testXml2Obj() throws Exception {
String xml="<?xml version='1.0' ?><cn.wolfcode.xstream.__01__quickstart.User><username>willie</username><age>18</age><email>willie@wolfcode.cn</email></cn.wolfcode.xstream.__01__quickstart.User>";
// 创建 XStream 对象
XStream xStream = new XStream(new StaxDriver());
// xml字符串转为对象
User u = (User)xStream.fromXML(xml);
// xml文件转为对象
//User u = (User)xStream.fromXML(new File("user.xml"));
System.out.println(u);
}
OK , XStream 的简单使用已经搞定,简单使用对于仅仅简单数据的传输和转换已经足够使用,如果需要定制生成等,请看序篇.