将xml转换为object时候报错:javax.xml.bind.UnmarshalException: 意外的元素 (uri:"", local:"xml")。所需元素为(none)
代码如下:
/** * xml转object * @param clazz * @param xml * @param <T> * @return */ public static <T> T xmlToObject(Class<T> clazz, String xml) { try { JAXBContext jaxbContext = JAXBContext.newInstance(clazz); Unmarshaller unmarshaller = jaxbContext.createUnmarshaller(); StringReader reader = new StringReader(xml); T message = (T) unmarshaller.unmarshal(reader); return message; } catch (JAXBException e) { e.printStackTrace(); } }
调用方:
WxMessage wxMessage = XmlUtils.xmlToObject(WxMessage.class, requestBody);
原因:通过Unmarshaller 根据xml反射为对象
解决:在WxMessage,需要加上xml的注解:@XmlRootElement(name="xml")