作者微信 bishe2022

代码功能演示视频在页面下方,请先观看;如需定制开发,联系页面右侧客服
XML和对象相互转换的方法

Custom Tab

最近项目中需要用到XML配置一些信息,百度了一下,发现使用XStream相对简单,简单配置一下即可进行转换,方法如下:

首先添加依赖

[html] 
<dependency>  
           <groupId>com.thoughtworks.xstream</groupId>  
           <artifactId>xstream</artifactId>  
           <version>1.4.3</version>  
       </dependency>

IDEA会自动下载依赖的JAR包,下载完成后就可以编码了,主体代码如下:


先建立实体类,TransBean,该对象引用另外一个实体类FieldBean,代码如下:

[java] 
package com.springapp.mvc;  
  
import java.util.List;  
  
/** 
 * Created by zhangqq on 2016/9/19. 
 */  
public class TransBean {  
  
    private String id;  
    private List<FieldBean> parmList;  
  
    public String getId() {  
        return id;  
    }  
  
    public void setId(String id) {  
        this.id = id;  
    }  
  
    public List<FieldBean> getParmList() {  
        return parmList;  
    }  
  
    public void setParmList(List<FieldBean> parmList) {  
        this.parmList = parmList;  
    }  
  
    @Override  
    public String toString() {  
        System.out.println("转换对象成功,ID为:"+id+"列表长度"+parmList.size());  
        return String.valueOf(parmList.size());  
    }  
}

FieldBean如下:

[java] 
package com.springapp.mvc;  
  
/** 
 * Created by zhangqq on 2016/9/19. 
 */  
public class FieldBean {  
    private  String key;  
    private  String uName;  
    private  String isSign;  
  
    public String getKey() {  
        return key;  
    }  
  
    public void setKey(String key) {  
        this.key = key;  
    }  
  
    public String getuName() {  
        return uName;  
    }  
  
    public void setuName(String uName) {  
        this.uName = uName;  
    }  
  
    public String getIsSign() {  
        return isSign;  
    }  
  
    public void setIsSign(String isSign) {  
        this.isSign = isSign;  
    }  
}

测试类代码如下

[java] 
package com.springapp.mvc;  
  
import com.thoughtworks.xstream.XStream;  
import org.springframework.util.StringUtils;  
  
import java.io.IOException;  
  
/** 
 * Created by zhangqq on 2016/9/19. 
 */  
public class TestXml {  
  
  
    public static void main(String[] args)  
    {  
  
        testXml();  
  
    }  
  
    public static  String testXml()  
    {  
  
        /** 
         * 读取XML文件内容 
         */  
//        String filePath = FileUtils.getFilePath("trans/DelCard.xml");  
        TransBean transBean = new TransBean();  
//        try {  
            String xmlStr ;//= FileUtils.readFile(filePath);  
            xmlStr = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +  
                    "<TransId id=\"DelCard\">\n" +  
                    "    <PnrCallBack>\n" +  
                    "        <Field key=\"CmdId\" uName=\"CmdId\" isSign=\"true\"/>\n" +  
                    "        <Field key=\"RespCode\" uName=\"RespCode\" isSign=\"true\"/>\n" +  
                    "        <Field key=\"RespDesc\" uName=\"RespDesc\" isSign=\"false\"/>\n" +  
                    "        <Field key=\"MerCustId\" uName=\"MerCustId\" isSign=\"true\"/>\n" +  
                    "        <Field key=\"UsrCustId\" uName=\"UsrCustId\" isSign=\"true\"/>\n" +  
                    "        <Field key=\"CardId\" uName=\"CardId\" isSign=\"true\"/>\n" +  
                    "        <Field key=\"ChkValue\" uName=\"ChkValue\" isSign=\"false\"/>\n" +  
                    "\n" +  
                    "    </PnrCallBack>\n" +  
                    "</TransId>\n";  
  
            System.out.println("XML源文件:"+xmlStr);  
  
  
            if(!StringUtils.isEmpty(xmlStr))  
            {  
  
                /** 
                * 实例Xstream对象 
                * */  
                XStream xmlUtils =new XStream();  
  
                /** 
                 *设置XML节点别名为TransId,属性名 ,依据xml文件进行设定 
                 * */  
                xmlUtils.processAnnotations(TransBean.class);  
                xmlUtils.alias("TransId", TransBean.class);  
                xmlUtils.aliasAttribute(TransBean.class, "id", "id");  
                xmlUtils.aliasField("PnrCallBack", TransBean.class, "parmList");  
  
                xmlUtils.processAnnotations(FieldBean.class);  
                xmlUtils.alias("Field", FieldBean.class);  
                xmlUtils.aliasAttribute(FieldBean.class, "key", "key");  
                xmlUtils.aliasAttribute(FieldBean.class, "uName", "uName");  
                xmlUtils.aliasAttribute(FieldBean.class, "isSign", "isSign");  
  
                /** 
                 * 执行转换 
                * */  
                transBean = (TransBean) xmlUtils.fromXML(xmlStr);  
  
                String toXml = xmlUtils.toXML(transBean);  
                System.out.println("对象转换为XML:"+toXml);  
  
  
            }  
  
//        } catch (IOException e) {  
//            e.printStackTrace();  
//        }  
        return  transBean.toString();  
    }  
}

输入内容如下:

[html] 
XML源文件:<?xml version="1.0" encoding="UTF-8"?>  
<TransId id="DelCard">  
    <PnrCallBack>  
        <Field key="CmdId" uName="CmdId" isSign="true"/>  
        <Field key="RespCode" uName="RespCode" isSign="true"/>  
        <Field key="RespDesc" uName="RespDesc" isSign="false"/>  
        <Field key="MerCustId" uName="MerCustId" isSign="true"/>  
        <Field key="UsrCustId" uName="UsrCustId" isSign="true"/>  
        <Field key="CardId" uName="CardId" isSign="true"/>  
        <Field key="ChkValue" uName="ChkValue" isSign="false"/>  
  
    </PnrCallBack>  
</TransId>  
  
对象转换为XML:<TransId id="DelCard">  
  <PnrCallBack>  
    <Field key="CmdId" uName="CmdId" isSign="true"/>  
    <Field key="RespCode" uName="RespCode" isSign="true"/>  
    <Field key="RespDesc" uName="RespDesc" isSign="false"/>  
    <Field key="MerCustId" uName="MerCustId" isSign="true"/>  
    <Field key="UsrCustId" uName="UsrCustId" isSign="true"/>  
    <Field key="CardId" uName="CardId" isSign="true"/>  
    <Field key="ChkValue" uName="ChkValue" isSign="false"/>  
  </PnrCallBack>  
</TransId>  
转换对象成功,ID为:DelCard列表长度7

转载自:http://blog.csdn.net/dreamfly88/article/details/52587931

Home