基于JAXB的 javaBean 转换xml工具类,当javaBean中使用 泛型 时,
/**
* JavaBean转换成xml(包含泛型)
* @param obj
* @param c 泛型具体实现类
* @param encoding
* @return
*/ public static String convertToXml(Object obj, Class c, String encoding) {
String result = null;
try {
JAXBContext context = JAXBContext.newInstance(obj.getClass(), c);
Marshaller marshaller = context.createMarshaller();
// Marshaller.JAXB_FORMATTED_OUTPUT 决定是否在转换成xml时同时进行格式化(即按标签自动换行,否则即是一行的xml)
marshaller. setProperty (Marshaller.JAXB_FORMATTED_OUTPUT, Boolean .TRUE);
// Marshaller.JAXB_ encoding xml的编码方式
marshaller.setProperty(Marshaller.JAXB_ENCODING, encoding);
// 去掉生成xml的默认报文头
marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE);
StringWriter writer = new StringWriter();
writer.append("<?xml version=\"1.0\" encoding=\"").append(encoding).append("\"?>").append("\n");
marshaller.marshal(obj, writer);
result = writer.toString();
} catch ( Exception e) {
e.printStackTrace();
}
return result;
}
// 测试类代码
Request Document requestDocument = new RequestDocument<DrawerRegisterDto>();
requestDocument.setBody(drawerRegisterDto);
// beanToxml(包含泛型)
System.out.println(JaxbUtil.convertToXml(requestDocument,DrawerRegisterDto.class));