2012-05-08 10 views
3

私のアプリ(ゲーム)では、XMLスクリプトを読み込んでクラスオブジェクトにする必要があります。私はこのことについていくつかの回答を読んだAndroid XML parse failed予期しないトークン

05-08 23:03:22.342: I/System.out(588): XML Pasing Excpetion = org.xml.sax.SAXParseException: Unexpected token (position:TEXT ��������������������[email protected]:69 in [email protected]) 

しかし、それらすべてが(私の問題を解決するために失敗します。http:私は、DOM

しかし、私が実行したときに、私は次のエラーを得経由して、全体のXMLリーダーが完了しました:)//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> 

答えて

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> 

それとも、要素(代わりにsomething_elseの)名前と1として「サブエレメント」を使用することができます値として。

3

xmlファイルはどこに保存しますか? 「res」フォルダにあります。それを「資産」に保存する必要があります。 Res-solutionは、 "res"フォルダの特定とapkでのプレゼンテーションのために動作しません。ファイルを「資産」に移動すると、すべてが機能していることがわかります。 次のコードを使用してInputSourceを作成します。

getAssets().open("yourfilename.xml") 
関連する問題