首页 > 代码库 > Xstream util xml 与 bean之间互转

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 

Xstream util xml 与 bean之间互转