私が遭遇したいくつかの XML ファイルは、私には整形式に見えますが、整形式の XML チェックに失敗しています (私が間違っている可能性があります)。
私はそれを簡単な例に減らしました:
<?xml version="1.0" encoding="Cp1252"?>
<jnlp/>
チェックを行うために使用されるメソッドは、次のように機能します。
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"。
唯一の問題は、キャッチでブレークポイントを設定して、このエンコーディング名が解決されることを確認できることです。それで、ここでの取引は何ですか?プロローグで使用できるエンコーディングも XML によって制限されますか?