3

私のアプリ(ゲーム)では、XMLスクリプトを読み取り、クラスオブジェクトに変換する必要があります。DOMを介してXMLリーダー全体を完成させました

しかし、実行すると、次のエラーが発生しました。

05-08 23:03:22.342: I/System.out(588): XML Pasing Excpetion = org.xml.sax.SAXParseException: Unexpected token (position:TEXT ��������������������...@1:69 in java.io.InputStreamReader@4129a200) 

私はこれについていくつかの答えを読みましたが、それらはすべて私の問題を修正できませんでした(http://stackoverflow.com/questions/7885962/android-utf-8-file-parsing)。

これが私のコードです:

    InputStream inputStream = ctx.getResources().openRawResource(R.xml.script);
ctx.getApplicationContext().getPackageName()+"/xml/"+path);



        Reader reader = new InputStreamReader(inputStream,"UTF-8");

        InputSource is = new InputSource(reader);
        is.setEncoding("UTF-8");


        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder db = dbf.newDocumentBuilder();


        Document root = db.parse(is);

問題に応じて、私もこれを試しました:

 InputStream inputStream = ctx.getResources().openRawResource(R.xml.script);
 Document root = db.parse(inputStream);

まったく同じ例外を生成しました...

この問題を解決する方法は?

私のxmlファイル:

<script>

<scene no="0">
    <character id="1">1</character>

    <dialog no="1">
        <title>1</title>
 Sub-Element 1
    </dialog>
</scene>



</script>
4

2 に答える 2

6

XMLが無効です。「サブ要素1」は要素自体の中にある必要があります。XMLドキュメントは、XMLとして定義するタグで始まる必要があります。<?xml version="1.0" ?>したがって、完全なファイルは次のようになります。

<?xml version="1.0" ?>
<script>
<scene no="0">
    <character id="1">1</character>
    <dialog no="1">
        <title>1</title>
        <something_else>Sub-Element 1</something_else>
    </dialog>
</scene>
</script>

または、要素名として(の代わりに)「Sub-Element」を使用something_elseし、値として1を使用することもできます。

于 2012-05-08T15:19:55.160 に答える
3

xmlファイルはどこに保存しますか?「res」フォルダ内。「アセット」に保存する必要があります。「res」フォルダが特定され、apkに表示されるため、Res-solutionが機能していません。ファイルを「アセット」に移動すると、すべてが機能していることがわかります。InputSourceを作成するには、次のコードを使用します

getAssets().open("yourfilename.xml")
于 2013-02-18T13:18:47.097 に答える