经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » Spring » 查看文章
springMarchal集成xStream的完整示例代码
来源:jb51  时间:2022/3/1 15:40:15  对本文有异议

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

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

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

  1. <dependency>
  2. <groupId>com.thoughtworks.xstream</groupId>
  3. <artifactId>xstream</artifactId>
  4. <version>1.4.11.1</version>
  5. </dependency>

2.POJO类:

  1. package com.yang.alibabamysql.domain.bo;
  2.  
  3. import com.thoughtworks.xstream.annotations.XStreamAlias;
  4. import lombok.Data;
  5. import java.util.List;
  6. @XStreamAlias(value = "man", impl = Man.class)
  7. @Data
  8. public class Man {
  9. @XStreamAlias("id")
  10. private Long id;
  11. @XStreamAlias("name")
  12. private String name;
  13. @XStreamAlias("sonList")
  14. protected List<Son> sonList;
  15. @XStreamAlias(value = "son", impl = Son.class)
  16. @Data
  17. public static class Son {
  18. @XStreamAlias("id")
  19. private Long id;
  20. @XStreamAlias("name")
  21. private String name;
  22. }
  23. }

3.配置类:

  1. package com.yang.alibabamysql.config;
  2.  
  3. import com.thoughtworks.xstream.io.naming.NoNameCoder;
  4. import com.thoughtworks.xstream.io.xml.Xpp3Driver;
  5. import com.yang.alibabamysql.domain.bo.Man;
  6. import org.springframework.context.annotation.Bean;
  7. import org.springframework.context.annotation.Configuration;
  8. import org.springframework.oxm.xstream.XStreamMarshaller;
  9. @Configuration
  10. public class XStreamMarshallerConfig {
  11. @Bean
  12. public XStreamMarshaller getXStreamMarshaller() {
  13. XStreamMarshaller xStreamMarshaller = new XStreamMarshaller();
  14. xStreamMarshaller.setStreamDriver(new Xpp3Driver(new NoNameCoder()));
  15. xStreamMarshaller.setAnnotatedClasses(Man.class, Man.Son.class);
  16. xStreamMarshaller.setAutodetectAnnotations(true);
  17. return xStreamMarshaller;
  18. }
  19. }

4.测试类:

  1. package com.yang.alibabamysql.controller;
  2.  
  3. import com.google.common.collect.Lists;
  4. import com.thoughtworks.xstream.io.naming.NoNameCoder;
  5. import com.thoughtworks.xstream.io.xml.Xpp3Driver;
  6. import com.yang.alibabamysql.AlibabaMysqlApplicationTests;
  7. import com.yang.alibabamysql.domain.bo.Man;
  8. import org.springframework.oxm.xstream.XStreamMarshaller;
  9. import java.util.ArrayList;
  10. class UserControllerTest extends AlibabaMysqlApplicationTests {
  11. private static final XStreamMarshaller xStreamMarshaller;
  12. static {
  13. xStreamMarshaller = new XStreamMarshaller();
  14. xStreamMarshaller.setStreamDriver(new Xpp3Driver(new NoNameCoder()));
  15. xStreamMarshaller.setAnnotatedClasses(Man.class, Man.Son.class);
  16. xStreamMarshaller.setAutodetectAnnotations(true);
  17. }
  18. public static void marshal() {
  19. Man.Son son = new Man.Son();
  20. son.setId(2L);
  21. son.setName("ypw");
  22. ArrayList<Man.Son> sonArrayList = Lists.newArrayList(son);
  23. Man man = new Man();
  24. man.setId(1L);
  25. man.setName("yjx");
  26. man.setSonList(sonArrayList);
  27. System.err.println(xStreamMarshaller.getXStream().toXML(man));
  28. public static void unmarshal() {
  29. String xml = "<man><id>1</id><name>yjx</name><sonList><son><id>2</id><name>ypw</name></son></sonList></man>";
  30. Man man = (Man) xStreamMarshaller.getXStream().fromXML(xml);
  31. System.err.println(man.getSonList().get(0).getName());
  32. public static void main(String[] args) {
  33. marshal();
  34. System.out.println("=============");
  35. unmarshal();
  36. }

输出:

<man>
  <id>1</id>
  <name>yjx</name>
  <sonList>
    <son>
      <id>2</id>
      <name>ypw</name>
    </son>
  </sonList>
</man>
=============
ypw

到此这篇关于springMarchal集成xStream的文章就介绍到这了,更多相关springMarchal集成xStream内容请搜索w3xue以前的文章或继续浏览下面的相关文章希望大家以后多多支持w3xue!

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号