我遇到的一些XML文件未能通过格式良好的XML检查,即使它看起来很好(我可能错了.)
我把它简化为一个简单的例子:
用于执行检查的方法如下所示:
public static boolean isWellFormedXml(InputStream inputStream) {
try {
XMLInputFactory inputFactory = XMLInputFactory.newInstance();
inputFactory.setProperty(XMLInputFactory.IS_COALESCING, false);
inputFactory.setProperty(XMLInputFactory.SUPPORT_DTD, false);
XMLStreamReader reader = inputFactory.createXMLStreamReader(stream);
try {
// Scan through all the reader tokens to ensure everything is well formed
while (reader.hasNext()) {
reader.next();
}
} finally {
reader.close();
}
} catch (XMLStreamException e) {
// Ignore the exception
return false;
}
return true;
}
我看到的错误是:
javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,40]
消息:无效的编码名称“Cp1252”.
唯一的问题是 – 我可以在catch上断点并确认此编码名称确实解决了.那么这里的交易是什么? XML是否也限制允许在序言中使用哪些编码?
解决方法:
校验:
我想你正在寻找的编码可能是windows-1252. Cp1252可能是java中的有效字符集,但在XML中,您不应该使用它(通过该名称).
标签:java,encoding,xml
来源: https://codeday.me/bug/20190625/1284736.html