我使用以下代码通过XmlPullParser
从远程XML文件中提取内容:
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中会出现这种情况,以及如何解决这个问题?这打破了我的解析器并杀死了我的应用程序。
答案 0 :(得分:0)
修改你的解析:
XmlPullParser xpp = XmlPullParserFactory.newInstance().newPullParser();
xpp.setInput(xml, "UTF-8");
while (xpp.getEventType() != XmlPullParser.END_DOCUMENT)
{
if (xpp.getEventType() == XmlPullParser.START_TAG)
{
if (xpp.getName().equalsIgnoreCase("item"))
{
listObject = new MyClass();
}
else if (xpp.getName().equalsIgnoreCase("yy"))
{
listObject.setYY(parser.nextText());
}
else if (xpp.getName().equalsIgnoreCase("zz"))
{
listObject.setZZ(parser.nextText());
}
}
else if(xpp.getEventType() == XmlPullParser.END_TAG)
{
listObject = null;
}
xpp.next();
}