Почему XML, помещенный в /res/xml, генерирует исключение XmlPullParserException (нет ошибки в /res/raw)?
Я помещаю локальный файл XML в res/raw
а затем загружает его в InputStreamer
объект. Он работает нормально, и я могу разобрать его содержание.
Когда я помещаю тот же XML в res/xml
, Я получил XmlPullParserException
говоря, что не может найти тег START.
Я использую этот код для заполнения InputStream
объект:
InputStream is = getResources().openRawResource(R.raw.data);
и эта строка для загрузки XML из /res/xml
:
InputStream is = context.getResources().openRawResource(R.xml.data);
Почему это происходит? Если 2-й подход неправильный, какова цель res/xml
?
2 ответа
Вы можете прочитать это так:
void parseXml(int xmlId){
Resources res = context.getResources();
//Xml parserer
XmlResourceParser parser = res.getXml(xmlResource);
while (parser.next() != XmlPullParser.END_DOCUMENT) {
//A start tag is reached
if(parser.getEventType() == XmlPullParser.START_TAG){
//Which tag is
if(parser.getName().equalsIgnoreCase("Name"){
//Do something when a <Name> tag is reached
//and so on ...
}
}
}
}
getXML()
не возвращает InputStream
поэтому я не уверен, как ваш код компилируется. Возвращает XMLResourceParser
,
http://developer.android.com/reference/android/content/res/Resources.html
Вернуть XmlResourceParser, с помощью которого вы можете прочитать общий ресурс XML для данного идентификатора ресурса.
Цель /res/xml
это удобное место для хранения XML и последующего его анализа! Иногда вам не нужно InputStream
:)