构建对象
公共请求对象
@Data
@XmlRootElement(name = "CommonExampleReq")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(propOrder = {
"commonReq"
})
public class CommonExampleReq implements Serializable {
/**
* 公共请求参数
*/
private CommonReq commonReq;
}
公共对象
@Data
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "CommonReq")
@XmlType(propOrder = {
"serialNum", "reqTime", "reqParam"
})
@XmlSeeAlso({ExampleReq.class})
public class CommonReq<T> {
/**
* 序列号
*/
private String serialNum;
/**
* 请求时间
*/
private String reqTime;
/**
* 请求内容
*/
@XmlAnyElement(lax = true)
private T reqParam;
}
请求对象
@Data
@XmlRootElement(name = "ExampleReq")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(propOrder = {
"reqParam1", "reqParam2"
})
public class ExampleReq {
/**
* 请求参数1
*/
private String reqParam1;
/**
* 请求参数2
*/
private String reqParam2;
}
对象转XML输出
public class Converter {
public static String convertXml(Object obj) {
// 输出流
StringWriter sw = new StringWriter();
try {
// JAXB实现转换
JAXBContext context = JAXBContext.newInstance(obj.getClass());
Marshaller marshaller = context.createMarshaller();
//设置编码UTF-8
marshaller.setProperty(Marshaller.JAXB_ENCODING,"UTF-8");
// 格式化xml输出
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,Boolean.TRUE);
// 将对象转换成输出流形式的xml
marshaller.marshal(obj, sw);
} catch (JAXBException e) {
e.printStackTrace();
}
return sw.toString();
}
}
自定义XML声明
public class Converter {
public static String convertXml(Object obj) {
// 输出流
StringWriter sw = new StringWriter();
try {
// JAXB实现转换
JAXBContext context = JAXBContext.newInstance(obj.getClass());
Marshaller marshaller = context.createMarshaller();
//设置编码UTF-8
marshaller.setProperty(Marshaller.JAXB_ENCODING,"UTF-8");
// 格式化xml输出
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,Boolean.FALSE);
// 自定义声明
sw.write("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n");
// 将对象转换成输出流形式的xml
marshaller.marshal(obj, sw);
} catch (JAXBException e) {
e.printStackTrace();
}
return sw.toString();
}
}
生成XML
public String entityToXml(Object obj) {
CommonExampleReq data = new CommonExampleReq();
CommonReq<ExampleReq> commonReq = new CommonReq<>();
commonReq.setReqParam(obj);
commonReq.setSerialNo(String.valueOf(Math.round(Math.random() * 100)) + System.currentTimeMillis());
commonReq.setReqTime(new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()));
data.setCommonReq(commonReq);
//生成XML字符串
return converter.convertXml(data);
}
请求包实例
<?xml version=“1.0” encoding=“UTF-8”?>
<CommonExampleReq>
<CommonReq>
<serialNum>******</serialNum>
<reqTime>********</reqTime>
<reqParam>
<reqParam1>请求参数1</reqParam1>
<reqParam2>请求参数2</reqParam2>
</reqParam>
</CommonReq>
</CommonExampleReq>
本篇为JAXB简单实例,如有不足,欢迎指出。