springMarchal集成xStream的完整示例代码

网友投稿 691 2022-10-26

springMarchal集成xStream的完整示例代码

springMarchal集成xStream的完整示例代码

Xstream是一个库, 用于将对象序列化为xml, 反之亦然, 而无需任何映射文件。注意, castor需要一个映射文件。

XStreamMarshaller类提供了将对象封送为xml的工具, 反之亦然。

1.maven GAV(1.4.11.1版本才兼容):

com.thoughtworks.xstream

xstream

1.4.11.1

2.POJO类:

package com.yang.alibabamysql.domain.bo;

import com.thoughtworks.xstream.annotations.XStreamAlias;

import lombok.Data;

import java.util.List;

@XStreamAlias(value = "man", impl = Man.class)

@Data

public class Man {

@XStreamAlias("id")

private Long id;

@XStreamAlias("name")

private String name;

@XStreamAlias("sonList")

protected List sonList;

@XStreamAlias(value = "son", impl = Son.class)

@Data

public static class Son {

@XStreamAlias("id")

private Long id;

@XStreamAlias("name")

private String name;

}

}

3.配置类:

package com.yang.alibabamysql.config;

import com.thoughtworks.xstream.io.naming.NoNameCoder;

import com.thoughtworks.xstream.io.xml.Xpp3Driver;

import com.yang.alibabamysql.domain.bo.Man;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import org.springframework.oxm.xstream.XStreamMarshaller;

@Configuration

public class XStreamMarshallerConfig {

@Bean

public XStreamMarshaller getXStreamMarshaller() {

XStreamMarshaller xStreamMarshaller = new XStreamMarshaller();

xStreamMarshaller.setStreamDriver(new Xpp3Driver(new NoNameCoder()));

xStreamMarshaller.setAnnotatedClasses(Man.class, Man.Son.class);

xStreamMarshaller.setAutodetectAnnotations(true);

return xStreamMarshaller;

}

}

4.测试类:

package com.yang.alibabamysql.controller;

import com.google.common.collect.Lists;

import com.thoughtworks.xstream.io.naming.NoNameCoder;

import com.thoughtworks.xstream.io.xml.Xpp3Driver;

import com.yang.alibabamysql.AlibabaMysqlApplicationTests;

import com.yang.alibabamysql.domain.bo.Man;

import org.springframework.oxm.xstream.XStreamMarshaller;

import java.util.ArrayList;

class UserControllerTest extends AlibabaMysqlApplicationTests {

private static final XStreamMarshaller xStreamMarshaller;

static {

xStreamMarshaller = new XStreamMarshaller();

xStreamMarshaller.setStreamDriver(new Xpp3Driver(new NoNameCoder()));

xStreamMarshaller.setAnnotatedClasses(Man.class, Man.Son.class);

xStreamMarshaller.setAutodetectAnnotations(true);

}

public static void marshal() {

Man.Son son = new Man.Son();

son.setId(2L);

son.setName("ypw");

ArrayList sonArrayList = Lists.newArrayList(son);

Man man = new Man();

man.setId(1L);

man.setName("yjx");

man.setSonList(sonArrayList);

System.err.println(xStreamMarshaller.getXStream().toXML(man));

public static void unmarshal() {

String xml = "1<name>yjx2ypw";

Man man = (Man) xStreamMarshaller.getXStream().fromXML(xml);

System.err.println(man.getSonList().get(0).getName());

public static void main(String[] args) {

marshal();

System.out.println("=============");

unmarshal();

}

输出:

  1  yjx            2      ypw      =============ypw

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Lemon 一个简单、轻量级的Android Socket框架
下一篇:Optuna是一种自动超参数优化框架
相关文章

 发表评论

暂时没有评论,来抢沙发吧~