xml 与JAVAbean转换

package com.dinpay.dpp.csp.instruction.vo;

import java.io.Serializable;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

/**
* 交易接口输入输出参数实体类
*
* @author tangkuo
*
*/

@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name="packet")
public class SpdbPacketVo implements Serializable{
private static final long serialVersionUID = 1L;

//5.1.1 输入要素: https页面方式和https指令方式下向网关发送交易时,都必须提供3个基本要素:transName、Plain、Signature。
//其中,transName是交易名;Plain是交易字段拼装的明文,支付、撤销、退货的Plain的组织方式类似;Signature是对Plain的签名。

@XmlElement(name="transName")
private  String transName;//消费交易类型

@XmlElement(name="plain")
private  String plain;//商户订单数据组成的原始数据字符串

@XmlElement(name="signature")
private  String signature;//原始数据字符串的签名


//5.1.2 输出要素: 支付网关返回商户的信息,是以XML报文的组织结构的一段内容
//交易正常返回:<packet><transName>交易名称</transName><Plain> 交易请求明文</Plain><Signature>交易请求明文的签名</Signature></packet>
//交易出错返回: <packet><ErrorCode>错误码</ErrorCode><ErrorMsg>错误信息</ErrorMsg></packet>

@XmlElement(name="ErrorCode")
private  String ErrorCode;//错误码

@XmlElement(name="ErrorMsg")
private  String ErrorMsg;//错误信息

/**
* 获取消费交易类型
* @return
*/
public String getTransName() {
return transName;
}

/**
* 设置消费交易类型
* @param transName
*/
public void setTransName(String transName) {
this.transName = transName;
}

/**
* 获取商户订单数据组成的原始数据字符串
* @return
*/
public String getPlain() {
return plain;
}

/**
* 设置商户订单数据组成的原始数据字符串
* @param plain
*/
public void setPlain(String plain) {
this.plain = plain;
}

/**
* 获取原始数据字符串的签名
* @return
*/
public String getSignature() {
return signature;
}

/**
* 设置原始数据字符串的签名
* @param signature
*/
public void setSignature(String signature) {
this.signature = signature;
}

/**
* 获取浦发银行返回的错误码信息
* @return
*/
public String getErrorCode() {
return ErrorCode;
}

/**
* 设置浦发银行返回的错误码信息
* @return
*/
public void setErrorCode(String errorCode) {
ErrorCode = errorCode;
}

/**
* 获取银行放返回的错误信息
* @return
*/
public String getErrorMsg() {
return ErrorMsg;
}

/**
* 设置错误信息值
* @return
*/
public void setErrorMsg(String errorMsg) {
ErrorMsg = errorMsg;
}




}





/**
* Copyright (c) 2011-2015 All Rights Reserved.
*/
package com.dinpay.dpp.csp.instruction.comm.util.spdb;

import java.io.StringReader;
import java.io.StringWriter;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;

import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.dinpay.dpp.csp.instruction.vo.SpdbPacketVo;
/**
* JavaBean与XML转换工具类
*
* @author tangkuo
*
*/
public class JaxbUtil {

private final static Logger log = LoggerFactory.getLogger(JaxbUtil.class);

/**
* JavaBean转换成xml
* 默认编码UTF-8
* @param obj
* @param writer
* @return
*/
public static String convertToXml(Object obj) {
return convertToXml(obj, "UTF-8");
}

/**
* JavaBean转换成xml
* @param obj
* @param encoding
* @return
*/
public static String convertToXml(Object obj, String encoding) {
try {
JAXBContext context = JAXBContext.newInstance(obj.getClass());
Marshaller marshaller = context.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.setProperty(Marshaller.JAXB_ENCODING, encoding);

StringWriter writer = new StringWriter();
marshaller.marshal(obj, writer);
return writer.toString();
} catch (Exception e) {
log.error(e.getMessage(), e);
return StringUtils.EMPTY;
}
}

/**
* xml转换成JavaBean
* @param xml
* @param c
* @return
*/
@SuppressWarnings("unchecked")
public static <T> T convertToJavaBean(String xml, Class<T> c) {
try {
JAXBContext context = JAXBContext.newInstance(c);
Unmarshaller unmarshaller = context.createUnmarshaller();
return (T) unmarshaller.unmarshal(new StringReader(xml));
} catch (Exception e) {
log.error(e.getMessage(), e);
return null;
}
}

public static void main(String[] args) {
SpdbPacketVo spdbPacketVo = new SpdbPacketVo();
String xml = "<packet><ErrorCode>96; nested exception is java.lang.NullPointerException: null</ErrorCode><ErrorMsg>网关系统错</ErrorMsg></packet>";
spdbPacketVo = convertToJavaBean(xml,spdbPacketVo.getClass());
System.out.println("="+spdbPacketVo);
}
}




猜你喜欢

转载自tangkuo.iteye.com/blog/2298787