public static <T> T fromXml(String xml, Class<T> clazz) {
try {
StringReader reader = new StringReader(xml);
return (T) createUnmarshaller(clazz).unmarshal(reader);
} catch (JAXBException e) {
throw Exceptions.unchecked(e);
}
}
使用上述代码解析xml时,报错:
java.lang.RuntimeException: javax.xml.bind.UnmarshalException
- with linked exception:
[org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 7; 不允许有匹配 "[xX][mM][lL]" 的处理指令目标。]
at org.springside.modules.utils.Exceptions.unchecked(Exceptions.java:27)
经查,原因是xml内容的首尾包含了空格。
去掉 <?xml version="1.0" encoding="GBK"?> 前面的空格即可。