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