我遇到的一些 XML 文件未能通过格式良好的 XML 检查,即使它在我看来格式良好(我可能错了。)
我把它简化为一个简单的例子:
<?xml version="1.0" encoding="Cp1252"?>
<jnlp/>
Run Code Online (Sandbox Code Playgroud)
用于进行检查的方法如下所示:
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;
}
Run Code Online (Sandbox Code Playgroud)
我看到的错误是:
javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,40]
Run Code Online (Sandbox Code Playgroud)
消息:无效的编码名称“Cp1252”。
唯一的问题是 - 我可以在捕获处断点并确认此编码名称确实解析。那么这里有什么关系呢?XML 是否也限制了您可以在序言中使用的编码?
查看:
http://www.iana.org/assignments/character-sets/character-sets.xml
我猜您正在寻找的编码可能是 windows-1252。Cp1252 可能是 java 中的有效字符集,但在 XML 中,您不应该使用它(通过该名称)。
归档时间: |
|
查看次数: |
5313 次 |
最近记录: |