XStream用法总结 JavaBean与XML互转工具

XStream是一个简单的基于Java库,Java对象序列化到XML,反之亦然(即:可以轻易的将Java对象和xml文档相互转换)。

引入依赖

<dependency>
	<groupId>com.thoughtworks.xstream</groupId>
	<artifactId>xstream</artifactId>
	<version>1.4.13</version>
</dependency>

注解

@XStreamAsAttribute注解可以使定义对象的属性映射为xml文件的属性。

@XStreamAlias标注别名,当属性名和xml元素名不同时使用,一样时可以不写。

方法

xstream.fromXML(xml);可以将xml字符串转化为对象;

xstream.toXML(person); 方法可以将Java对象转为xml字符串。

xml报文格式

<BODY>
    <JSL>1</JSL>
    <LIST>
        <Record index="1">
            <NAME>张三</NAME>
            <NUMBER>001</NUMBER>
        </Record>
    </LIST>
</BODY>

配置映射对象

@Data
@XStreamAlias("BODY")
public class Body implements Serializable {

    private static final long serialVersionUID = 1L;

    @XStreamAlias("JLS")
    private Integer jsl;

    @XStreamAlias("LIST")
    private List<Profit> list = new ArrayList<>();
}

@Data
@XStreamAlias("Record")
public class Profit {

    @XStreamAsAttribute
    @XStreamAlias("index")
    private String index;

    @XStreamAlias("NAME")
    private String name;

    @XStreamAlias("NUMBER")
    private String number;
	
}

为了方便统一配置XStream转换,可以封装个工具类,传入类的class和xml字符串,返回对象。

工具类

public class XStreamUtil {
    public static Object toBean(Class<?> clazz, String xml) {
		//设置驱动
        XStream xstream = new XStream(new StaxDriver());
		//对指定的类使用Annotations 进行序列化,这步非常关键
        xstream.processAnnotations(clazz);
		//忽略xml报文中不存在的元素,当xml报文中元素不确定时,如果类属性里存在xml报文里没有的属性,会报错  
		xstream.ignoreUnknownElements();
        xstream.allowTypesByRegExp(new String[] { ".*" });
        Object xmlObject= xstream.fromXML(xml);
        return xmlObject;
    }
}

工具类使用

Body body = (Body) XStreamUtil.toBean(Body.class, xmlContent)

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值