1

SAXBuilder を使用して XML ファイルを JDOM Document インスタンスに解析する際に問題があります。

次の例外がスローされます。

[Fatal Error] :1:1: Content is not allowed in prolog.

Stack Exchange やインターネットの他の場所でこれらすべてのスレッドを見つけて読み、エラーをデバッグするためにさまざまなことを試しました。

私は次のコードスニペットになってしまいましたが、これも同様にスローされます。

String template = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<server></server>";
InputStream in = new StringBufferInputStream(template);
return saxBuilder.build(in);

どうしたの?


恥ずかしいことですが、ここで示したスニペットによってエラーが発生したのではなく、後で XMLUnit ライブラリを使用して解析された XML を別の XML と比較したときにエラーが発生したことが判明しました。

エラーが提示された行にあると信じさせたのは、エラーメッセージの内容でした。

この質問は価値を意味しないため、閉じる(可能であれば削除する)のが適切だと思います。

4

2 に答える 2

1

このエラーは通常、xml 宣言の前にテキストがあることを意味します。

あなたのスニペットでは、xml は問題ないようです。ただし、問題はドキュメントにない場合があります。スキーマまたはその他の参照 xml ファイルがある場合、エラーは実際にはそれらの 1 つを参照している可能性があります。

于 2012-07-09T12:20:02.847 に答える
1

問題は別の場所にあると思います。次のコード(dom4jを使用)は私にとってはうまくいきます:

public static void main(String[] args) throws DocumentException {
    String template = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<server></server>";
    SAXReader saxReader = new SAXReader();
    InputStream is = new StringBufferInputStream(template);
    Document document = saxReader.read(is);
    System.out.println(document.asXML());
}

StringBufferInputStream非推奨であることにも注意してください。代替案は

        StringReader sr = new StringReader(template);
        Document document = saxReader.read(sr);

したがって、問題は XML スニペットにあるのではなく、おそらくsaxBuilder.build(...)

于 2012-07-09T12:26:38.283 に答える