XML和对象相互转换的方法

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

首先添加依赖

 
            com.thoughtworks.xstream
            xstream
            1.4.3
        

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

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public List getParmList() {
        return parmList;
    }

    public void setParmList(List 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 = "\n" +
                    "\n" +
                    "    \n" +
                    "        \n" +
                    "        \n" +
                    "        \n" +
                    "        \n" +
                    "        \n" +
                    "        \n" +
                    "        \n" +
                    "\n" +
                    "    \n" +
                    "\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:
  
    
    
    
    
    
    
    
  

转换对象成功,ID为:DelCard列表长度7

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

 
  

你可能感兴趣的:(java,idea)