org.xml.ax.SAXParseException;1字节UTF-8序列的字节1无效



我在尝试此代码时出错线上的错误日志

docBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();

代码:

public static Object simpleDeserFromXml(InputStream in) {
DocumentBuilder docBuilder;
try {
docBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document document = docBuilder.parse(in);
Element root = document.getDocumentElement();
Element elemBean = null;
Map<String, Class<?>> clsIdMap = new HashMap<String, Class<?>>();
for (Node node = root.getFirstChild(); node != null; node = node.getNextSibling()) {
if (node instanceof Element) {
Element elem = (Element) node;
if ("b".equalsIgnoreCase(elem.getTagName())) {
elemBean = elem;
} else if ("c".equals(elem.getTagName())) {
try {
String clsName = elem.getAttribute("v");
Class<?> cls = null;
if ("boolean".equals(clsName)) {
cls = boolean.class;
} else if ("byte".equals(clsName)) {
cls = byte.class;
} else if ("short".equals(clsName)) {
cls = short.class;
} else if ("char".equals(clsName)) {
cls = char.class;
} else if ("int".equals(clsName)) {
cls = int.class;
} else if ("long".equals(clsName)) {
cls = long.class;
} else if ("float".equals(clsName)) {
cls = float.class;
} else if ("double".equals(clsName)) {
cls = double.class;
} else {
cls = Class.forName(clsName);
}
clsIdMap.put(elem.getAttribute("id"), cls);
} catch (ClassNotFoundException cnfe) {
// TODO must process class not found
logger.error("", cnfe);
}
}
}
}
if (elemBean != null) {
return buildBeanFromXml(elemBean, clsIdMap);
}
} catch (ParserConfigurationException e) {
logger.error("", e);
} catch (SAXException e) {
logger.error("", e);
} catch (IOException e) {
logger.error("", e);
}
return null;
}

我读了一些关于这件事的帖子,发现这个,但在这个代码中,我不能忍受什么是"秒",所以我可以解决我的问题

InputSource is = new InputSource(new ByteArrayInputStream(cond.getBytes()));

这是我关于这个问题的错误日志:

[Fatal Error] :3293:36: Invalid byte 1 of 1-byte UTF-8 sequence.
[http-nio-8080-exec-3] ERROR - 18 Jul 2018 15:21:50,721:com.integrosys.base.hs.techinfra.model.CasCompareUtil -
org.xml.sax.SAXParseException; lineNumber: 3293; columnNumber: 36; Invalid byte 1 of 1-byte UTF-8 sequence.
at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source)
at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:121)
at com.integrosys.base.hs.techinfra.model.CasCompareUtil.simpleDeserFromXml(CasCompareUtil.java:1217)

你们能帮我吗,谢谢!

哦,我找到了解决这个问题的方法像这个

Reader reader = new InputStreamReader(in,"UTF-8");
InputSource is = new InputSource(reader);
is.setEncoding("UTF-8");
docBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document document = docBuilder.parse(is);

如果你需要,你们可以参考。谢谢大家!

相关内容

最新更新