Несоответствие типов: невозможно преобразовать из String в XmlResourceParser

Я пытаюсь прочитать и проанализировать немного 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 на строку (как предлагает 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 не может быть разрешено в переменную»)


person user3585761    schedule 30.05.2014    source источник
comment
Ознакомьтесь с документацией.developer.android.com/guide/topics/data/ хранилище данных.html. Читать параметры внутренней памяти   -  person Raghunandan    schedule 30.05.2014
comment
Я обновил свой пост выше - есть предложения? :)   -  person user3585761    schedule 30.05.2014


Ответы (1)


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

возвращает строку. Вы не можете назначить String для XmlResourceParser.

XmlResourceParser  p = "some/directory";

эквивалентно попытке присвоить:

int number = "some text"; 

Вы не можете пропустить такие типы.

В вашем случае вам нужно вызвать функцию, которая возвращает XmlResourceParser. Попробуйте: android: как загрузить файл xml из каталога ресурсов? или создавать xml на лету из строки

person Damian Polan    schedule 30.05.2014
comment
Как определить р? (обновленный источник показан выше) - person user3585761; 30.05.2014