53

カスタム XML ファイルを取得して解析するプログラムを Java で作成しています。ストレージに XML ファイルを使用しています。Eclipse で次のエラーが発生します。

[Fatal Error] :1:1: Content is not allowed in prolog.
org.xml.sax.SAXParseException: Content is not allowed in prolog.
    at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:239)
    at     com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:283  )
    at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:208)
    at me.ericso.psusoc.RequirementSatisfier.parseXML(RequirementSatisfier.java:61)
    at me.ericso.psusoc.RequirementSatisfier.getCourses(RequirementSatisfier.java:35)
    at     me.ericso.psusoc.programs.RequirementSatisfierProgram.main(RequirementSatisfierProgram.java:23  )

XML ファイルの先頭が含まれています。

<?xml version="1.0" ?>
<PSU>
     <Major id="IST">
        <name>Information Science and Technology</name>
        <degree>B.S.</degree>
        <option> Information Systems: Design and Development Option</option>
        <requirements>
            <firstlevel type="General_Education" credits="45">
                <component type="Writing_Speaking">GWS</component>
                <component type="Quantification">GQ</component>

プログラムは XML ファイルを読み取ることができますがDocumentBuilder.parse(XMLFile)、解析された を取得するために呼び出すとorg.w3c.dom.Document、上記のエラーが発生します。

XML ファイルのプロローグに無効なコンテンツがあるようには思えません。何が悪いのかわかりません。助けてください。ありがとう。

4

8 に答える 8

22

xml ファイルにこのようなジャンク文字が含まれていないか確認してください。存在する場合は、次の構文を使用して削除してください。

String XString = writer.toString();
XString = XString.replaceAll("[^\\x20-\\x7e]", "");
于 2012-04-19T14:03:09.207 に答える
10

これもこの問題の解決策だと思います。

ドキュメントタイプを「UTF-8でエンコード」から「 BOMなしでUTF-8でエンコード」に変更します

同じ変更を行うことで問題を解決しました。

于 2012-11-01T12:08:18.587 に答える
7

XML ファイルの先頭に隠し空白がないことを確認してください。また、ノードに encoding="UTF-8" (または 16? 手がかりがない) を含めることもできます。

于 2010-04-08T12:57:58.620 に答える
3

ドキュメントは問題ないように見えますが、目に見えない文字が含まれていると思われます。これを 16 進エディタで開き、最初の「<」の前に何もないことを確認します。XML ヘッダーのスペースがスペースであることを確認してください。"?>" の前のスペースを削除してください。どの改行が使用されているかを確認します。

ドキュメントが適切な UTF-8 であることを確認してください。一部の Windows エディターは、ドキュメントを UTF-16 として保存します (つまり、2 バイトごとに 0)。

于 2010-04-08T12:56:48.277 に答える
1

ファイルの正しいアドレスを指定していません。のようなアドレスを指定する必要があります。C:/Users/xyz/Desktop/myfile.xml

于 2012-11-11T22:52:11.523 に答える
1

適切なxmlエンコーディングとスキーマとの一致があると思います。

それでもこのエラーが発生する場合は、使用した xml と入力タイプを非整列化するコードを確認してください。XML ドキュメントは独自のエンコーディングを宣言するため、Reader からではなく、InputStream から StreamSource オブジェクトを作成することをお勧めします。これにより、XML プロセッサは宣言されたエンコーディングを正しく処理できます [参考文献: Java in A Nutshell ]。

お役に立てれば!

于 2012-05-02T04:13:49.373 に答える
0

xml ファイルを制御できる場合は、ファイルの先頭にもう少し情報を追加してみてください。

<?xml version="1.0" encoding="UTF-16" standalone="no"?>
于 2010-04-08T16:22:41.663 に答える
0

XML ファイル内の構文の問題を確認してください。Cocoon を使用して xsl/xsp で作業しているときにこのエラーが見つかりました。存在しないノードなどを使用して変数を定義しています。XML全体を確認してください。

于 2010-04-08T16:29:42.860 に答える