我通过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();
如您所见,此代码中没有新的或奇怪的地方。
现在,在 Android 3.0 和更新的系统上,当获取的 XML 内容进入这个解析器时,它们看起来“正常”,如下图所示:

您可以看到 XML 文件的内容已被正确获取。
但是当我将同一个项目连接到 Android 2.3.3 或更早的设备时,我得到了不同的结果!查看在 Android 2.2 设备上拍摄的相同图像。

你看到这些奇怪的字符\uoooo!项目也buffer已更改为txtBuf!
这是什么意思呢?为什么在 Android 2.3.3 以下会发生这种情况以及如何解决此问题?这会破坏我的解析器并杀死我的应用程序。