您的位置:首页 > 编程语言 > Java开发

XML和对象相互转换的方法

2016-09-19 18:02 387 查看
最近项目中需要用到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对象互转


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java xml