标签:
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]]
标签:
原文地址:http://www.cnblogs.com/shell-blog/p/5903791.html