效果实现图:
难度不大主要是之前自己对于jdk下面的xml包没有用过,摸索了一个下午才拼凑出来想要的效果,下面根据报文从上往下解释代码跟注解:
首先是package-info.java上加上包注解@XmlSchema,这个文件也是第一次使用,可以理解成包级别的统一注释
接下来就是报文体:
因为ase那一块大概率需要复用所以将它抽出去了,最终就是这个testase对象包含了Header与Transactions两块内容
最后是内容:
这样基本就完成了,主要要知道几个注解的用法,里面主要涉及了xmlelement,xmlattribute,xmlvalue,可以根据实现效果理解一下就行了,如果没接触过的话看了看注解的注释也没太明白所以试了试耽误了些时间
剩下的就是弄一个xmlutil了:
public class XMLUtil {
public static final String DEFAULT_ENCODING = "UTF-8";
public static <R> R xml2Dto(String xmlStr, Class<R> clazz) throws JAXBException {
JAXBContext context = JAXBContext.newInstance(clazz);
// 进行将Xml转成对象的核心接口
Unmarshaller unmarshaller = context.createUnmarshaller();
StringReader sr = new StringReader(xmlStr);
R r = (R) unmarshaller.unmarshal(sr);
return r;
}
public static String dto2Xml(Object o) throws Exception {
return convertToXml(o, DEFAULT_ENCODING);
}
private static String convertToXml(Object obj, String encoding) throws Exception {
JAXBContext context = JAXBContext.newInstance(obj.getClass());
Marshaller marshaller = context.createMarshaller();
// 指定是否使用换行和缩排对已编组 XML 数据进行格式化的属性名称。
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.setProperty(Marshaller.JAXB_ENCODING, encoding);
StringWriter writer = new StringWriter();
marshaller.marshal(obj, writer);
String result = writer.toString();
return result;
}
网上抄的现成的,改改入参的事