1.JAXB
注解:
@XmlRootElement(name = "xml") 根外包裹标签名 @XmlAccessorType(XmlAccessType.FIELD) 注解加在属性上即可
@XmlElement(name = "Voice")加载属性上
工具类
public static String beanToXml(Object obj, Class<?> load) {
String xmlStr = null;
try {
JAXBContext context = JAXBContext.newInstance(load);
Marshaller marshaller = context.createMarshaller();
// 去掉生成xml的默认报文头
marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true);
StringWriter writer = new StringWriter();
marshaller.marshal(obj, writer);
xmlStr = writer.toString();
} catch (JAXBException e) {
logger.error("实体转为xml时出错!", e);
}
return xmlStr;
}
public static Object xmlToBean(String str, Class<?> load) {
Object object = null;
try {
JAXBContext context = JAXBContext.newInstance(load);
Unmarshaller unmarshaller = context.createUnmarshaller();
object = unmarshaller.unmarshal(new StringReader(str));
} catch (JAXBException e) {
logger.error("xml转换到实体时出错!", e);
}
return object;
}
jacksonXml
@JacksonXmlElementWrapper:可用于指定List等集合类,外围标签名;
@JacksonXmlProperty:指定包装标签名,或者指定标签内部属性名;
@JacksonXmlRootElement:指定生成xml根标签的名字;
@JacksonXmlText:指定当前这个值,没有xml标签包裹。
@JacksonXmlRootElement(localName = "xml")根标签
@JacksonXmlProperty(localName = "ToUserName")每个属性的标签
工具类
public static <T> T xmlToBean(String xml,Class<T> clazz){
T t = null;
XmlMapper xmlMapper = new XmlMapper();
xmlMapper.configure(DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES,true);
try {
t = xmlMapper.readValue(xml,clazz);
} catch (IOException e) {
logger.error("xml转换到实体时出错!", e);
e.printStackTrace();
}
return t;
}
public static String beanToXml(Object object){
XmlMapper xmlMapper = new XmlMapper();
String xml = null;
try {
xmlMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
xml = xmlMapper.writeValueAsString(object);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
return xml;
}