XML和对象相互转换的方法

来源:互联网 发布:match against 没数据 编辑:程序博客网 时间:2024/06/01 23:49

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

首先添加依赖

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

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

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

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如下:

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;    }}

测试类代码如下

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();    }}
输入内容如下:

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

DEMO下载地址为:XML和JAVA对象互转



2 0
原创粉丝点击