XStream在Java对象和XML之间相互转换 工具类

1、通过XStream,发现那个功能还是很强大的,通过对这个了解,写了两个方法,xml和实体对象之间相互转换的工具类。

2、首先要下载XStream jar包:主要xpp3_min-1.1.4c.jar,xstream-1.4.7.jar,xstream-benchmark-1.4.7.jar,xstream-hibernate-1.4.7.jar 4个jar包。

3、看代码,代码最能说明问题:

package com.utils;


import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;


public class XmlUtil {


/**
* @param obj 要转换的对象
* @param child 去除包路径名,如果不写会生产com.**.**...
* @return
*/
public static String simpleobject2xml(Object obj,Object ... child) { 
  XStream xStream = new XStream(new DomDriver()); 
  xStream.alias(obj.getClass().getSimpleName(), obj.getClass());
  for(int i=0;i < child.length; i++){
  Object objs =child[i];
  xStream.alias(objs.getClass().getSimpleName(), objs.getClass());
  }
  String xml = xStream.toXML(obj); 
  return xml; 

/**
* 将XML转为对象
* @param xml
* @param node 节点实体类,如果xml有多个实体则实例化多少实体
* @return
*/
public static Object simplexml2object(String xml, Object... node) {
XStream xStream = new XStream(new DomDriver());


for (int i = 0; i < node.length; i++) {
Object objs = node[i];
xStream.alias(objs.getClass().getSimpleName(), objs.getClass());
}
Object reobj = xStream.fromXML(xml);
return reobj;



}


测试类:

public class Test {


/**
* @param args
*/
public static void main(String[] args) {

XMLInfo pos = new XMLInfo();
pos.setAppKey("");
pos.setPassWord("e10adc3949ba59abbe56e057f20f883e");
pos.setAppKey("1223");
pos.setPrintKind("1");
PrintData vs =new PrintData();
vs.setBigAccountDataId("");
vs.setBillno("");
vs.setBlank1("");
vs.setBlank2("");
vs.setBlank3("");
vs.setBlank4("");
vs.setBlank5("");
vs.setBusinessType("");
vs.setCargoDesc("");
vs.setCargoType("11");
vs.setDeliveryclaim("333");
vs.setFee("123.01");
vs.setFeeUppercase("1232");
vs.setInsurance("111");
vs.setInsure("321111111");
vs.setLength("1111");
List<PrintData> l =new ArrayList<PrintData>();
l.add(vs);
pos.setPrintDatas(l);

StringBuffer str =new StringBuffer();
str.append("<XMLInfo>");
str.append("<passWord>e10adc3949ba59abbe56e057f20f883e</passWord>");
str.append("<appKey>1223</appKey>");
str.append("<printKind>1</printKind>");
str.append("<PrintDatas>");
str.append("<PrintData>");
str.append("<bigAccountDataId></bigAccountDataId>");
str.append("<billno></billno>");
str.append("<length>1111</length>");
str.append("<insure>321111111</insure>");
str.append("<insurance>111</insurance>");
str.append("<fee>123.01</fee>");
str.append("<feeUppercase>1232</feeUppercase>");
str.append("<businessType></businessType>");
str.append("<cargoDesc></cargoDesc>");
str.append("<cargoType>11</cargoType>");
str.append("<deliveryclaim>333</deliveryclaim>");
str.append("<blank1></blank1>");
str.append("<blank2></blank2>");
str.append("<blank3></blank3>");
str.append("<blank4></blank4>");
str.append("<blank5></blank5>");
str.append("</PrintData>");
str.append("</PrintDatas>");
str.append("</XMLInfo>");
 
Object obj =XmlUtil.simplexml2object(str.toString(), new XMLInfo(),new PrintData());
    System.out.println(XmlUtil.simpleobject2xml(pos,vs,vs));




}


}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值