• Spring Boot集成xstream快速入门demo


    1.什么是xstream?

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

    XStream 特点

    • 使用方便 - XStream 的 API 提供了一个高层次外观,以简化常用的用例。
    • 无需创建映射 - XStream 的 API 提供了默认的映射大部分对象序列化。
    • 性能 - XStream 快速和低内存占用,适合于大对象图或系统。
    • 干净的 XML - XStream 创建一个干净和紧凑 XML 结果,这很容易阅读。
    • 不需要修改对象 - XStream 可序列化的内部字段,如私有和最终字段,支持非公有制和内部类。默认构造函数不是强制性的要求。
    • 完整对象图支持 - XStream 允许保持在对象模型中遇到的重复引用,并支持循环引用。
    • 可自定义的转换策略 - 定制策略可以允许特定类型的定制被表示为 XML 的注册。
    • 安全框架 - XStream 提供了一个公平控制有关解组的类型,以防止操纵输入安全问题。
    • 错误消息 - 出现异常是由于格式不正确的 XML 时,XStream 抛出一个统一的例外,提供了详细的诊断,以解决这个问题。
    • 另一种输出格式 - XStream 支持其它的输出格式,如 JSON。

    2.XStream 基本使用

    创建 XStream 对象

    通过它传递一个 StaxDriver 创建 XStream 对象。 StaxDriver 使用 SAX 解析器 (可从 Java6),一个快速的 XML 解析器。

    XStream xstream = new XStream(new StaxDriver());

    序列化对象到 XML

    使用 toXML () 方法来获取对象的 XML 字符串表示。

    String xml = xstream.toXML(student);

    反序列化 XML 获得对象

    使用 fromXML () 方法来从 XML 对象。

    Student student1 = (Student)xstream.fromXML(xml);

    3.代码工程

    实验目标

    实现java对象转xml

    pom.xml

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <project xmlns="http://maven.apache.org/POM/4.0.0"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    5. <parent>
    6. <artifactId>springboot-demo</artifactId>
    7. <groupId>com.et</groupId>
    8. <version>1.0-SNAPSHOT</version>
    9. </parent>
    10. <modelVersion>4.0.0</modelVersion>
    11. <artifactId>xstream</artifactId>
    12. <properties>
    13. <maven.compiler.source>8</maven.compiler.source>
    14. <maven.compiler.target>8</maven.compiler.target>
    15. </properties>
    16. <dependencies>
    17. <dependency>
    18. <groupId>org.springframework.boot</groupId>
    19. <artifactId>spring-boot-starter-web</artifactId>
    20. </dependency>
    21. <dependency>
    22. <groupId>org.springframework.boot</groupId>
    23. <artifactId>spring-boot-autoconfigure</artifactId>
    24. </dependency>
    25. <dependency>
    26. <groupId>org.springframework.boot</groupId>
    27. <artifactId>spring-boot-starter-test</artifactId>
    28. <scope>test</scope>
    29. </dependency>
    30. <dependency>
    31. <groupId>com.thoughtworks.xstream</groupId>
    32. <artifactId>xstream</artifactId>
    33. <version>1.4.19</version>
    34. </dependency>
    35. <dependency>
    36. <groupId>org.projectlombok</groupId>
    37. <artifactId>lombok</artifactId>
    38. </dependency>
    39. </dependencies>
    40. </project>

    controller

    1. package com.et.xstream;
    2. import com.thoughtworks.xstream.XStream;
    3. import com.thoughtworks.xstream.io.xml.DomDriver;
    4. import org.springframework.web.bind.annotation.RequestMapping;
    5. import org.springframework.web.bind.annotation.RestController;
    6. import java.util.HashMap;
    7. import java.util.Map;
    8. @RestController
    9. public class HelloWorldController {
    10. @RequestMapping(value = "/hello" ,produces = {"application/xml;"})
    11. public String showHelloWorld(){
    12. Employee e1 = new Employee("Sanyog", "Gautam", 1000,
    13. 19, "Male");
    14. // Serializing a Java object into XML
    15. XStream xStream = new XStream(new DomDriver());
    16. String xml = xStream.toXML(e1); // Converting it to XML
    17. return xml;
    18. }
    19. }

    entity

    1. package com.et.xstream;
    2. import lombok.Getter;
    3. @Getter
    4. public class Employee {
    5. private String firstName;
    6. private String lastName;
    7. private int salary;
    8. private int age;
    9. private String gender;
    10. public Employee(String firstName, String lastName,
    11. int salary, int age, String gender)
    12. {
    13. this.firstName = firstName;
    14. this.lastName = lastName;
    15. this.salary = salary;
    16. this.age = age;
    17. this.gender = gender;
    18. }
    19. }

    DemoApplication.java

    1. package com.et.xstream;
    2. import org.springframework.boot.SpringApplication;
    3. import org.springframework.boot.autoconfigure.SpringBootApplication;
    4. @SpringBootApplication
    5. public class DemoApplication {
    6. public static void main(String[] args) {
    7. SpringApplication.run(DemoApplication.class, args);
    8. }
    9. }

    以上只是一些关键代码,所有代码请参见下面代码仓库

    代码仓库

    4.测试

    • 启动Spring Boot应用
    • 访问http://127.0.0.1:8088/hello

    5.引用

  • 相关阅读:
    LeetCode每日一题(1457. Pseudo-Palindromic Paths in a Binary Tree)
    基于JavaFX的扫雷游戏实现(二)——游戏界面
    【一年总结】我的大三
    水果店圈子:现在开水果店需要什么设备,开水果店所需要的设备有哪些
    二十九、【进阶】MySQL索引的概述和索引查询
    C语言题收录(八)
    DevEco Device Tool 3.0 Release 新版本发布,支持多人共享开发
    软件开发生命周期模型
    【正点原子STM32连载】第十七章 串口通信实验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1
    小白也有大厂梦,如何从零开始掌握高薪 Java 工程师必备技能?
  • 原文地址:https://blog.csdn.net/dot_life/article/details/139847943