跟我快速学习XStream(一)

本文介绍了XStream框架的基本用法,包括如何将Java对象序列化为XML以及如何将XML反序列化为Java对象。通过示例代码展示了XStream的简单易用特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

作者:黄少存,叩丁狼高级讲师。原创文章,转载请注明出处。

介绍:

XStream是一种 OXMapping 技术,Object XML Mapping 对象和 XML 的映射处理.

用来处理 XML 文件序列化的小框架,将 JavaBean 序列化为 XML,或将 XML 反序列化成对象,不需要其它辅助类和映射文件,使得XML序列化和反序列化不再繁琐。适用于使用 XML 做数据传输的接口书写和数据传输.
虽然现在很多框架已经拥有 XML 自动转对象的做法,不过对于 xml 数据传输的操作还是会使用这些小框架来将对象转为 xml 进行传输.以下咱就来快速学习下 XStream 吧.

快速引入

官网下载 jar 包: http://x-stream.github.io/download.html
image.png

快速开始

接下来我们来做个简单的例子快速入手,到这里咱们都已经知道此框架可以做对象和 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>

通过生成的结果咱们可以看得出来转化的方式如下

  1. 类的全限定名作为xml的跟
  2. 属性名作为子元素
  3. 属性值作为元素的内容

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 的简单使用已经搞定,简单使用对于仅仅简单数据的传输和转换已经足够使用,如果需要定制生成等,请看序篇.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值