-1

内部ストレージから少しの XML を読み取って解析しようとしています。

private void readXML() {
    XmlResourceParser p = Environment.getExternalStorageDirectory()
            + File.separator + "BootConfiguration";
    try {
        int nextEvent = p.next();
        while (nextEvent != XmlPullParser.START_TAG) {
            nextEvent = p.next();
        }
        processTag(p, p.getName(), new XMLCollector());
    } catch (XmlPullParserException e) {
        bootconfig = "ERROR: Failed to parse XML!\n" + e;
    } catch (IOException e) {
        bootconfig = "ERROR: IOException!\n" + e;
    } finally {
        p.close();
    }

    // TO-DO remove later
    TextView t = (TextView) findViewById(R.id.bootconfig);
    t.setText(bootconfig);
}

ただし、次のエラーが表示されます:"Type mismatch: cannot convert from String to XmlResourceParser"行上:

XmlResourceParser p = Environment.getExternalStorageDirectory()

XmlResourceParser を String に変更しようとしましたが (Eclipse が示唆しているように)、コード内でさらに多くのエラーが発生するだけです。

編集:

以下の最初の回答に示されている方法でショットを試みたところ、次のようになりました。

private void readXML() {
//              XmlPullParser p = Environment.getExternalStorageDirectory()
//                              + File.separator + "JvsBootConfiguration";
//             
                InputStream istr = this.getAssets().open(Environment.getExternalStorageDirectory()
                                + File.separator + "JvsBootConfiguration");
                  XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
                  factory.setNamespaceAware(true);
                  p = factory.newPullParser();
                  p.setInput(istr, "UTF-8");  


                try {
                        int nextEvent = p.next();
                        while (nextEvent != XmlPullParser.START_TAG) {
                                nextEvent = p.next();
                        }
                        processTag(p, p.getName(), new XMLCollector());
                } catch (XmlPullParserException e) {
                        bootconfig = "ERROR: Failed to parse XML!\n" + e;
                } catch (IOException e) {
                        bootconfig = "ERROR: IOException!\n" + e;
                } finally {
                        p.close();
                }

ただし、 p をどのように定義する必要があるのか​​ 正確にはわかりません(「pを変数に解決できない」という問題が残ることがわかるまで)

4

1 に答える 1

-1
Environment.getExternalStorageDirectory() + File.separator + "BootConfiguration";

文字列を返します。String を XmlResourceParser に割り当てることはできません。

XmlResourceParser  p = "some/directory";

割り当てようとするのと同じです:

int number = "some text"; 

そのようなタイプを見逃すことはできません。

あなたの場合、XmlResourceParser を返す関数を呼び出す必要があります。試してください: アンドロイド:アセットディレクトリからxmlファイルをロードする方法は? または 文字列からオンザフライでxmlを作成する

于 2014-05-30T16:49:22.433 に答える