使用XStream实现Java对象与XML之间的快速互转

本文介绍使用XStream工具实现Java对象与XML之间的快速转换。通过具体实例展示了如何配置XStream并进行双向转换。

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

需求:如何实现Java对象与XML之间的快速互转?
要实现这个需求,解决方法太多了,今天为大家展示的是XStream,可能很多朋友已经知道这个工具。
下面来看看XStream如何使用。
第一步导包:这个是使用Maven的方式引入包,很方便,不用经常去找jar包和考虑这个jar包有哪些依赖,所以也推荐大家在开发的时候尽可能的使用Maven。

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

第二步创建源对象(就是需要被转换成XML的对象),为了展示可以生产多级的结构,我这里新建两个实体类。

public class Person {
    private String  name;
    private String  address;
    private int     age;
    private Developer developer;

    public Person() {
    }

    public Person(String name, String address, int age) {
        this.name = name;
        this.address = address;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public Developer getDeveloper() {
        return developer;
    }

    public void setDeveloper(Developer developer) {
        this.developer = developer;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", address='" + address + '\'' +
                ", age=" + age +
                ", developer=" + developer +
                '}';
    }
}
public class Developer extends Person{
    private int score;
    private int rank;

    public Developer() {

    }

    public Developer(int score, int rank) {
        this.score = score;
        this.rank = rank;
    }

    public int getScore() {
        return score;
    }

    public void setScore(int score) {
        this.score = score;
    }

    public int getRank() {
        return rank;
    }

    public void setRank(int rank) {
        this.rank = rank;
    }

    @Override
    public String toString() {
        return "Developer{" +
                "score=" + score +
                ", rank=" + rank +
                '}';
    }
}

第三步实现Java对象与XML的互转:

    /**
     * 功能描述:Java对象转换成XML字符串
     * @param object 被转换成xml的源对象
     * @return
     */
    public static String objectToXml(Object object){
        XStream xStream = new XStream();
        xStream.alias("person",Object.class);
        return xStream.toXML(object);
    }

    /**
     *  功能描述:XML字符串转换成Java对象
     * @param xml   被解析的xml字符串
     * @param object    解析的目标对象
     * @return
     */
    public static Object xmlToObject(String xml,Object object){
        XStream xStream = new XStream();
        xStream.alias("object",Object.class);
        return xStream.fromXML(xml);
    }

第四步测试:

    public static void main(String[] args) {
        Person person = new Person("就是爱体验","广东深圳",24);
        Developer developer = new Developer(100,0);
        person.setDeveloper(developer);
        String xml = objectToXml(person);
        System.out.println("objectToXml:"+xml);
        System.out.println("===============================");
        Person person1 = new Person();
        Person personobject  = (Person) xmlToObject(xml,person1);
        System.out.println("xmlToObject:"+personobject);
    }

测试结果:
这里写图片描述
当然,由于时间有限,这里只是一些简单的使用的讲解,如果想了解更多的使用方式,可以去官网更深一步的学习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值