2012-01-25 25 views
0

これは、ユーザーがファイル(実際には.xmlと.xmlを含むディレクトリ)を選択するランチャーアクティビティを持っています。 wav)。Android SAXParser:整形式ではない文書...それは整形式です

オープンしたいファイルをクリックすると、以前選択したファイルで動作する新しいアクティビティが開始されます。ユーザへ

  • 表示ファイル
  • Launcher_Activity: のonClick: Other_Activity.path_dir = file.getAbsolutePath()。 startActivity(Other_Activity_Intent);
  • Other_Activity: file_source = new InputSource(new StringReader(path_dir + "/xml.xml")); parser.parse(file_source)

はParseException:行1、COLUMN0時:整形式ではない(無効なトークン)

それがXMLファイルのようなものだが空だった...しかし、I私のpath_dirが正しいものであり、xmlファイルが適切な場所にあることも知っておいてください。

これまで私が使用していたので、整形式であることも知っています。アプリ、.xmlファイルの以前のバージョンで と "アプリ内" 私は.WAV使用したよう

file_source =新しいたInputSource(getResources()openRawResource(R.raw.xml)。)。

rawリソースを使用していました。 しかし

<?xml version="1.0" encoding="utf-8"?> 
<text> 
    <lots of tag .../> 
</text> 

THERはXMLでtyppoいない...が、誰もが手掛かりを持っています...私はアプリ 外のリソースを置くしようとしないことだし、私のXMLドキュメントは、もはや認識されていますか?


EDIT:

file_source = new InputSource(new StringReader(path_dir + "/xml.xml")); 
file_source.setEncoding("UTF-8"); 
parser.parse(file_source); 

どこか悪い形成された例外を避けるように見える...しかし、アプリ」クラッシュ、私は...

+0

あなたのファイルはどこにあり、あなたは生のリソースと同じ方法でファイルにアクセスしていますか? –

+0

ファイルに配置されている:PATH_DIRの値は '/ MNT /記憶/ My_app_dir/an_other_dir/xml.xml' : '/MNT /記憶/ My_app_dir/an_other_dir' ので、PATH_DIR +「/xml.xml "正しい場所です。 私はxmlファイルにアクセスしています: 'file_source = new InputSource(new StringReader(path_dir +" /xml.xml "));' –

+1

構文解析前にInputSourceを記録すると正しく印刷されますか? –

答えて

0

入れを追跡する必要がありますそのXML /assetsフォルダ内のファイルと、このラインを使用します。あなたのInputStreamをログに記録してみ

parser.parse(new InputSource(getAssets().open("xml.xml"))); 
+0

アプリの「外部」にリソースを配置したいので、XMLを内部/資産に入れたくありません。 –

+0

http://developer.android.com/guide/topics/data/data-storage.html – iCantSeeSharp

+0

Oromis彼が「リソースをアプリの外に置こうとしている」と明確に述べている。 –

1

をが得ている。

私はInputSourceについてよく分かりませんが、ファイルを正しく読み込むのに問題があります。

はRESディレクトリ内の代わりに

 
FileInputStream fis = new FileInputStream(new File("path to file)); 
parser.parse(fis); 
+0

'XMLReader型のメソッド解析(InputSource)は引数(FileInputStream)には適用されません。 ' ...だから私はInputSourceを使用していたのです –

+0

Ooops。うーん、とにかく、InputStreamからInputSourceを作成することができます。新しいInputSource(input_stream) –

0

XMLファイルをバイナリ形式に「プリコンパイルされた」され、これを使用してみてください。あなたがエラーに他の提案の誰かのように資産ディレクトリに

ParseException : At line 1, column0: not well-formed (invalid token) 

移動し、それを取得している、とあなたはそれをあなたがしたい方法を読むことができるようになります理由です

。ヒント:アセットフォルダはresフォルダとまったく同じ程度に「アプリの外に」あります。つまりどういたしまして。

関連する問題