Почему 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:)

Другие вопросы по тегам