Я извлекаю содержимое из удаленного XML-файла через XmlPullParser
, используя такой код:
factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
parser = factory.newPullParser();
parser.setInput(xml, "UTF-8");
eventType = parser.getEventType();
// process tag while not reaching the end of document
while (eventType != XmlPullParser.END_DOCUMENT) {
switch (eventType) {
// at start of document: START_DOCUMENT
case XmlPullParser.START_DOCUMENT:
break;
// at start of a tag: START_TAG
case XmlPullParser.START_TAG:
//get tag name
String tagName = parser.getName();
if (tagName.equalsIgnoreCase("item")) {
listObject = new MyClass();
} else if (tagName.equalsIgnoreCase("yy")) {
listObject.setYY(parser.nextText());
} else if (tagName.equalsIgnoreCase("zz")) {
listObject.setZZ(parser.nextText());
}
break;
}
// jump to next event
eventType = parser.next();
Как видите, в этом коде нет ничего нового или странного.
Теперь, когда полученный XML-контент поступает в этот парсер на Android 3.0 и более новых системах, он выглядит «нормально», как на этом изображении:
Вы можете видеть, что содержимое XML-файла было получено правильно.
Но когда я подключаю тот же проект к устройствам Android 2.3.3 или более ранней версии, я получаю ДРУГОЙ результат! Посмотрите на то же изображение, сделанное на устройстве Android 2.2.
Вы видите эти странные символы \uoooo
! Также элемент buffer
был изменен на txtBuf
!
Что все это значит? Почему это происходит в Android 2.3.3 ниже и как решить эту проблему? Это ломает мой парсер и убивает мое приложение.