xstream 实现xml和对象转换

1.jar包 xstream-1.4.2.jar     xpp3_min-1.1.4c.jar

2.工具类

package com.core.util;

import java.lang.reflect.Field;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import com.core.model.Mobile;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.converters.collections.CollectionConverter;
import com.thoughtworks.xstream.io.xml.DomDriver;
import com.thoughtworks.xstream.mapper.ClassAliasingMapper;

@SuppressWarnings("all")
public class XmlBeanUtil {

	private XmlBeanUtil() {}
	/**
	 * 实体转化xml
	 * @param object
	 * @param alias
	 * @return
	 */
	public static String beanToXml(Object object, Map<String, Class> aliasMap) {
		XStream xstream = new XStream(new DomDriver());
		String name = null;
		Class clazz = null;
		for (Map.Entry<String, Class> entry : aliasMap.entrySet()) {
			name = entry.getKey();
			clazz = entry.getValue();
			xstream.aliasType(name, clazz);
		}
		return xstream.toXML(object);
	}

   /**
    * xml 转换成实体bean
    * @param xml
    * @param aliasMap
    * @return
    */
    public static Object xmlToBean(String xml, Map<String,Class> aliasMap){
    	XStream xstream = new XStream(new DomDriver());
		String name = null;
		Class clazz = null;
		for (Map.Entry<String, Class> entry : aliasMap.entrySet()) {
			name = entry.getKey();
			clazz = entry.getValue();
			xstream.aliasType(name, clazz);
		}
        return xstream.fromXML(xml);
    }

}

  3.demo

package com.core.model;

import java.io.Serializable;
import java.util.List;

public class Mobile implements Serializable{

	private static final long serialVersionUID = -3457855554027518915L;
	private String type;
	private String productAddr;
	private List<PhoneBo> phones ;
	private List<String> colors;
	private List<Integer> prices;
	public String getType() {
		return type;
	}
	public void setType(String type) {
		this.type = type;
	}
	public String getProductAddr() {
		return productAddr;
	}
	public void setProductAddr(String productAddr) {
		this.productAddr = productAddr;
	}
	public List<PhoneBo> getPhones() {
		return phones;
	}
	public void setPhones(List<PhoneBo> phones) {
		this.phones = phones;
	}
	public List<String> getColors() {
		return colors;
	}
	public void setColors(List<String> colors) {
		this.colors = colors;
	}
	public List<Integer> getPrices() {
		return prices;
	}
	public void setPrices(List<Integer> prices) {
		this.prices = prices;
	}
	@Override
	public String toString() {
		return "Mobile [type=" + type + ", productAddr=" + productAddr
				+ ", phones=" + phones + ", colors=" + colors + ", prices="
				+ prices + "]";
	}

}

  

package com.core.model;

public class PhoneBo {

	private int id;

	private String name;

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

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

	@Override
	public String toString() {
		return "QueBo [id=" + id + ", name=" + name + "]";
	}
}

  

package com.core.test;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.core.model.Mobile;
import com.core.model.PhoneBo;
import com.core.util.XmlBeanUtil;
public class TestXmlBeanUtil {

	public static void main(String[] args) {
		test1();
	}
	public static void test1(){
		Mobile mobile = new Mobile();

		PhoneBo phone = new PhoneBo();
		phone.setId(100001);
		phone.setName("iphone6");

		List<PhoneBo> phones = new ArrayList<PhoneBo>();
		phones.add(phone);

		List<String> colors = new ArrayList<String>();
		colors.add("高雅红");
		colors.add("活力橙");
		colors.add("动力黄");
		colors.add("清新绿");
		colors.add("经典蓝");
		colors.add("玫瑰金");
		colors.add("诱惑紫");

		mobile.setPhones(phones);
		mobile.setType("iso");
		mobile.setProductAddr("郑州富士康");
		mobile.setColors(colors);

		List<Integer>prices = new ArrayList<Integer>();
		prices.add(11);
		prices.add(11);
		prices.add(11);
		prices.add(11);
		mobile.setPrices(prices);

		Map<String, Class> map = new HashMap<String, Class>(){
			{
				put("data", Mobile.class);
				put("phones", List.class);
				put("phone", PhoneBo.class);
//				put("colors", List.class);
//				put("prices", List.class);
//				put("price", int.class);
			}
		};

//		String xml = XmlBeanUtil.beanToXml(mobile, map,"prices",int.class, "price");
//		System.out.println(xml);
		String xmlData = XmlBeanUtil.beanToXml(mobile, map);
//		Mobile m = (Mobile) XmlBeanUtil.xmlToBean(xml, map,"prices",int.class, "price");
		System.out.println(xmlData);
		Mobile m = (Mobile) XmlBeanUtil.xmlToBean(xmlData, map);
		System.out.println(m.toString());
	}
}

  

4.测试结果

<data>
  <type>iso</type>
  <productAddr>郑州富士康</productAddr>
  <phones>
    <phone>
      <id>100001</id>
      <name>iphone6</name>
    </phone>
  </phones>
  <colors>
    <string>高雅红</string>
    <string>活力橙</string>
    <string>动力黄</string>
    <string>清新绿</string>
    <string>经典蓝</string>
    <string>玫瑰金</string>
    <string>诱惑紫</string>
  </colors>
  <prices>
    <int>11</int>
    <int>11</int>
    <int>11</int>
    <int>11</int>
  </prices>
</data>
Mobile [type=iso, productAddr=郑州富士康, phones=[QueBo [id=100001, name=iphone6]], colors=[高雅红, 活力橙, 动力黄, 清新绿, 经典蓝, 玫瑰金, 诱惑紫], prices=[11, 11, 11, 11]]

  

  

时间: 2024-08-07 00:18:27

xstream 实现xml和对象转换的相关文章

android XMl 解析神奇xstream 二: 把对象转换成xml

前言:对xstream不理解的请看:android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 1.Javabeen 代码 package com.android10; public class Product { private String name ; private String age ; public String getName() { return name; } public void setName(Strin

android XMl 解析神奇xstream 三: 把复杂对象转换成 xml

前言:对xstream不理解的请看: android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 android XMl 解析神奇xstream 二: 把对象转换成xml 1.JavaBeen package com.android10; public class Person { String pName ; String pAge ; public String getpName() { return pName; } pub

android XMl 解析神奇xstream 五: 把复杂对象转换成 xml ,并写入SD卡中的xml文件

前言:对xstream不理解的请看: android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 android XMl 解析神奇xstream 二: 把对象转换成xml android XMl 解析神奇xstream 三: 把复杂对象转换成 xml android XMl 解析神奇xstream 四: 将复杂的xml文件解析为对象 1.建立JavaBeen package com.android10; public class

XML,Object,Json转换之浅析Xstream的使用

XML,Object,Json转换之浅析Xstream的使用 请尊重他人的劳动成果,转载请注明出处:XML,Object,Json转换之浅析Xstream的使用 XStream的是一个简单的库,主要用于Java对象和XML之间的转换.但XStream也内置了对Json的支持. 1.Xstream的特点: 这里直接引用Xstream官方的叙述: 灵活易用:在更高的层次上提供了简单.灵活.易用的统一接口,用户无需了解项目的底层细节 无需映射:大多数对象都可以在无需映射的情况下进行序列化与反序列化的操

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

本文记录一下使用xstream这个api的注解特性对Java对象与XML字符串相互转换的一些代码示例.    我们很多人都处理过XML文件,也有很多非常成熟的第三方开源软件.如:jdom.dom4j等.虽然他们的功能非常强大,但在使用上还是有点不那么习惯.对于格式比较固定的XML文档,它的结构没有变化或是很少变化,这时将它转换成我们熟悉的Java对象来操作的话,会使工作变得更容易一些,而xstream正好可以满足这一点.    本文所用xstream的版本为:1.4.7 <dependency>

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)

XStream解析XML文本并用反射机制转换为对象

xml文本格式是网络通信中最常用的格式,最近特别研究了一下如何解析xml文本并转换为对象,现在分享一下我最近的学习成果~ 先列一下本例中需要解析的xml文本: Xml代码   <results name="list"> <row pubtime="2016-04-13 16:40:13" author="APP"  id="140" title="什么是公告" content="

xml与java对象转换 -- XStreamAlias

@XStreamAlias使用 一. 特点: 简化的API; 无映射文件; 高性能,低内存占用; 整洁的XML; 不需要修改对象;支持内部私有字段,不需要setter/getter方法 提供序列化接口; 自定义转换类型策略; 二. 使用场景 Transport转换 Persistence 持久化对象 Configuration 配置 Unit Tests 单元测试 Interface服务之间XML消息的交互 案例代码: @XStreamAlias("kfpt_dept") class

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