使用XStream注解实现Java对象与XML互相转换的代码示例

一定要对XStream的注解有一定的认识,最起码要知道每个注解是什么意思!!
代码实现:
1.创建java对象
1.1分别创建Book和Books对象

package com.xd.bean;

import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
//给Book起的别名,在xml中会生成<book>标签
@XStreamAlias("book")
public class Book {
    private String name="";
    private String author="";
    //该标签的意思是price会作为book的一个属性出现在标签中,如<book price="108">
    @XStreamAsAttribute
    private String price="";
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAuthor() {
        return author;
    }
    public void setAuthor(String author) {
        this.author = author;
    }
    public String getPrice() {
        return price;
    }
    public void setPrice(String price) {
        this.price = price;
    }
}
package com.xd.bean;

import java.util.List;

import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamImplicit;

@XStreamAlias("books")
public class Books {
    //隐式标签,加上这个注解可以去掉book最外层的<list></list>标签
    @XStreamImplicit
    private List<Book> list;
    public List<Book> getList() {
        return list;
    }
    public void setList(List<Book> list) {
        this.list = list;
    }   
}

2.创建测试类

package com.xd.Test;

import java.util.List;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;
import com.xd.bean.Book;
import com.xd.bean.Books;

public class test {
    private static final String xmlString="<books><book price=\"108\"><name>Java编程思想</name><author>Bruce Eckel</author></book><book price=\"52\"><name>Effective Java</name><author>Joshua Bloch</author></book><book price=\"118\"><name>Java 7入门经典</name><author>Ivor Horton</author></book></books>";

    public static String toXML(Object obj){
        XStream xstream = new XStream(new DomDriver("utf-8"));
        //识别obj中的注解
        xstream.processAnnotations(obj.getClass());
        //将obj对象转化为xml文件
        return xstream.toXML(obj);
    }

    public static <T> T toBean(String xmlstr,Class<T> cls){
        XStream xstream=new XStream(new DomDriver());
        //识别cls中的注解
        xstream.processAnnotations(cls);
        //注解给编译器一条指令,告诉他被批注的某些元素代码保持静默
        @SuppressWarnings("unchecked")
        T t=(T) xstream.fromXML(xmlstr);
        return t;
    }

    public static void main(String[] args) {
        //将xmlstring解析
        Books books=toBean(xmlString, Books.class);
        List<Book> list=books.getList();
        //将books中的值取出
        for(Book book : list){
            System.out.println("name="+book.getName()+ "\tauthor" +book.getAuthor()+ "\tprice=" +book.getPrice());
        }

        System.out.println(toXML(books));
    }
}

3.测试结果

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值