5

私が遭遇したいくつかの 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 によって制限されますか?

4

1 に答える 1

4

小切手:

http://www.iana.org/assignments/character-sets/character-sets.xml

あなたが探しているエンコーディングはwindows-1252であると思います。Cp1252 は Java では有効な文字セットかもしれませんが、XML では (その名前で) 使用することは想定されていません。

于 2013-04-22T07:25:25.247 に答える