プル パーサーを使用してアセット フォルダー内のローカル XML ファイルを解析するにはどうすればよいですか? プル パーサーを動作させることができません。常に io 例外をスローします。ファイルへのパスを取得できないか、ファイルに接続できないと思います。
11703 次
1 に答える
23
ミックス、
「assets」と「res」の両方からローカルファイルをロードするさまざまな方法をいじっていましたが、尋ねられたとおりに質問に答えるために(他の誰も持っていないようです):
まず、テストの前に XML が有効であることを確認するか、検証をオフにします。これを行うと同時にプル パーサーをインスタンス化する方法は次のとおりです。
try {
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setValidating(false);
XmlPullParser myxml = factory.newPullParser();
次に、xml ファイルを開き、プル パーサーへの入力として設定します。
InputStream raw = getApplicationContext().getAssets().open("simple.xml");
myxml.setInput(raw, null);
次に、プル ループをセットアップします (またはその他、遅延プルを行うかどうかによって異なります。これは設計上の決定です。
int eventType = myxml.getEventType();
while(eventType != XmlPullParser.END_DOCUMENT) {
if(eventType == XmlPullParser.START_DOCUMENT) {
Log.d(MY_DEBUG_TAG, "In start document");
}
else if(eventType == XmlPullParser.START_TAG) {
Log.d(MY_DEBUG_TAG, "In start tag = "+myxml.getName());
}
else if(eventType == XmlPullParser.END_TAG) {
Log.d(MY_DEBUG_TAG, "In end tag = "+myxml.getName());
}
else if(eventType == XmlPullParser.TEXT) {
Log.d(MY_DEBUG_TAG, "Have text = "+myxml.getText());
}
eventType = myxml.next();
}
} catch (XmlPullParserException e) {
に注意してくださいmyxml.getEventType()
。解析を開始し、プルしているタイプのイベントを処理するには、これを行う必要があります。注: 読みやすくするために、catch ブロックは省略されています。
上記を 2.1 でテストしました。役立つことを願っています -Frank
于 2011-01-14T10:39:22.783 に答える