Xstream util xml 与 bean之间互转

package com.demo.util;

import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.mapper.MapperWrapper;

public class XmlUtil {
	   /**
     * java 转换成xml
     * @Title: toXml 
     * @Description: TODO 
     * @param obj 对象实例
     * @return String xml字符串
     */
    public static String toXml(Object obj){
        XStream xstream=new XStream();
        xstream.processAnnotations(obj.getClass()); //通过注解方式的,一定要有这句话
        return xstream.toXML(obj);
    }
    
    /**
     *  将传入xml文本转换成Java对象
     * @Title: toBean 
     * @Description: TODO 
     * @param xmlStr
     * @param cls  xml对应的class类
     * @return T   xml对应的class类的实例对象
     * 
     * 调用的方法实例:PersonBean person=XmlUtil.toBean(xmlStr, PersonBean.class);
     */
    public static <T> T  toBean(String xmlStr,Class<T> cls){
        XStream xstream = new XStream() {
      //忽略xml中的未知节点 @Override protected MapperWrapper wrapMapper(MapperWrapper next) { return new MapperWrapper(next) { @SuppressWarnings("rawtypes") @Override public boolean shouldSerializeMember(Class definedIn, String fieldName) { if (definedIn == Object.class) { return false; } return super.shouldSerializeMember(definedIn, fieldName); } }; } }; xstream.processAnnotations(cls); @SuppressWarnings("unchecked") T obj=(T)xstream.fromXML(xmlStr); return obj; } }

Person.java

package com.demo.bean;

import java.util.List;

import com.thoughtworks.xstream.annotations.XStreamAlias;
@XStreamAlias("Person")
public class Person {
	private String userName;
	private List<Book> bookList;
public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
public List<Book> getBookList() {
		return bookList;
	}
	public void setBookList(List<Book> bookList) {
		this.bookList = bookList;
	}
	
}

Book.java

package com.demo.bean;

import com.thoughtworks.xstream.annotations.XStreamAlias;

@XStreamAlias("book")
public class Book {
	private String bookName;
	private int price;
	public String getBookName() {
		return bookName;
	}
	public void setBookName(String bookName) {
		this.bookName = bookName;
	}
	public int getPrice() {
		return price;
	}
	public void setPrice(int price) {
		this.price = price;
	}
	public Book(String bookName, int price) {
		super();
		this.bookName = bookName;
		this.price = price;
	}
	
}

  TestMain.java

package com.demo.main;

import java.util.ArrayList;
import java.util.List;

import com.demo.bean.Book;
import com.demo.bean.Person;
import com.demo.util.XmlUtil;

public class TestMain {
	public static void main(String[] args) {
		//testBeanToXml();
		testXmlToBean();
	}
	
	public static void testBeanToXml(){
		Person p = new Person();
		p.setUserName("xtream");
		List<Book> bookList =new ArrayList<Book>();
		Book book = new Book("呵呵",15);
		bookList.add(book);
		p.setBookList(bookList);
		String xml=XmlUtil.toXml(p);
		System.out.println(xml);
	}
	
	public static void testXmlToBean(){
		String xml ="<Person><userName>xstream</userName><age>25</age><bookList><book><bookName>呵呵</bookName><price>15</price></book></bookList></Person>";
		Person p =XmlUtil.toBean(xml, Person.class);
		System.out.println("p.getUserName():"+p.getUserName());
		System.out.println("p.getBookList().get(0).getBookName():"+p.getBookList().get(0).getBookName());
	}
}

  

xstream 官方文档  http://xstream.codehaus.org/manual-tweaking-output.html 

posted on 2014-10-10 10:30  落花无情流水有意  阅读(1111)  评论(0编辑  收藏  举报

导航