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 

时间: 2024-10-16 03:36:25

Xstream util xml 与 bean之间互转的相关文章

xml和bean之间转化

xml和bean之间转化//bean@XmlRootElement(name = "register")br/>@XmlAccessorType(XmlAccessType.PROPERTY)@XmlType(propOrder = {"name","age" })public class User {private String name;private String age;public String getName() {return

XStream进行xml和bean互转

加入pom <dependency> <groupId>com.thoughtworks.xstream</groupId> <artifactId>xstream</artifactId> <version>1.4.3</version> </dependency> 最简单的使用方式 XStream xStream = new XStream(); //声明XStream注解来源 xStream.proces

xstream实现xml与Object之间的自如转换

因为项目中用到xml交互数据,所以一时间想起了这个工具(XStream),于是琢磨了怎么使用.通过自已的一些编程经验及网络的强大,最终轻松搞定.需要准备如下jar包(xstream-1.4.7.jar.xpp3_min-1.1.4c.jar.xmlpull-1.1.3.1.jar) 1. 编写对应实体 RootBean @XStreamAlias("root") public class RootBean { @XStreamAlias("DocInfo") pri

jsonObject关于xml,json,bean之间的转换关系

1.json转换为JAVA @Test public void jsonToJAVA() { System.out.println("json字符串转java代码"); String jsonStr = "{\"password\":\"\",\"username\":\"张三\"}";//添加转义字符 JSONObject jsonObj = JSONObject.fromObject

xstream对象xml互转

1.引入jar包 xpp3_min-1.1.4c.jarxstream-1.4.8.jar 2.建立java bean package com.jdw.bean; import java.util.ArrayList; import java.util.List; public class Company { private List<Department> departments = new ArrayList<Department>(); public List<Depa

XML与Object之间的互转

private static final String W3C_XML_SCHEMA_NS_URI = "http://www.w3.org/2001/XMLSchema"; /** 将对象转换成xml @param obj 要转成xml的对象 @param xsdPath 标准的xml文件就传null @return xml格式的字符串*/public static String objToXml(Object obj, String xsdPath) throws JAXBExce

XStream实现xml和java对象之间的互相转换,同理JSON也可以

首先去官网下载响应JAR包 http://xstream.codehaus.org/index.html 最少需要两个jar包,一个xstream.jar,一个是xmlpull.jar 首先来看下java对象到xml的转换 package xml; class PhoneNumber { private int code; private int number; public int getCode() { return code; } public void setCode(int code)

XML配置里的Bean自动装配与Bean之间的关系

需要在<bean>的autowire属性里指定自动装配的模式 byType(根据类型自动装配) byName(根据名称自动装配) constructor(通过构造器自动装配) 名字须与属性名一致 byName根据Bean的名字和当前bean的setter风格的属性名进行自动装配,若有匹配的,则进行自动装配,没有则不装配 byType  根据bean的类型和当前bean的属性的类型进行自动装配 缺点:有一个以上的类型匹配的bean则抛异常 自动装配的缺点 不够灵活,不能两者兼而言之 Bean之间

XStream解析xml和json

XStream是一个在我看来比较好的一个第三方包了.因为它在解析时支持注解.这样很是方便,并且xml跟json这两种格式的文件都能进行解析,XStream本属于java的一个第三方包,甚是好用,若是拿它在android开发环境,也是能正常解析,但有点美中不足,因为android开发环境时,XStream不太支持json转对象,只支持对象转json,其他xml与对象的互转都支持.这样的话双解析就有了那么一点瑕疵之处,不过话说回来,没多少需求的数据交互会用json跟xml切来切去的,当只是json转