將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")
