XML和对象相互转换的方法

4 篇文章 0 订阅

最近项目中需要用到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对象互转

 


  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值