1

xml プル パーサーを使用して xml ドキュメントを解析しようとしています。xxml 宣言を含む xml ドキュメントの処理を開始するまで、すべてが正常に機能していました。

宣言があると、次のエラーが発生します。

02-08 15:37:16.960: WARN/System.err(9721): org.xmlpull.v1.XmlPullParserException: PI は xml で開始しないでください (position:unknown @1:5 in java.io.InputStreamReader@ 47ec2770)

ドキュメントから宣言を取り出すと、すべてが機能します。別のパーサーに切り替えるには遅すぎるので、それを機能させる必要があります!

私のパーサーコードは次のようになります

XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
    factory.setNamespaceAware(false);
    // factory.setFeature(XmlPullParser.FEATURE_PROCESS_DOCDECL, true);
    XmlPullParser xpp = factory.newPullParser();

    // get a reference to the file.

    File file = new File(Environment.getExternalStorageDirectory() + "/"
            + Constants.SD_CARD_DIR + "/" + Constants.XMLPATH);
    // create an input stream to be read by the stream reader.
    FileInputStream fis = new FileInputStream(file);
    // set the input for the parser using an InputStreamReader
    xpp.setInput(new InputStreamReader(fis));
    int eventType = xpp.getEventType();

    // /

    while (eventType != XmlPullParser.END_DOCUMENT) {...}
4

3 に答える 3

3

xmlファイルはUTF-8バイト順マークで始まっているようです(ここを参照)。おそらく、宣言をコピーしたときに発生しました。解決策は、使用しているエディターによって異なります。一部のエディターは、BOMを書き込まないように設定できます。ファイルの最初の文字を削除してもう一度入力すると、消えてしまうことがあります。

于 2011-02-09T08:59:45.047 に答える
0

私は同じ問題を抱えていましたが、実際にはutf-8 bomエンコーディングが原因ですが、xmlファイルがサーバーによって作成されたため、解決できませんでした。変更できませんでした

于 2012-02-29T05:28:25.697 に答える