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 でこれが発生するのはなぜですか? また、この問題を解決するにはどうすればよいですか? これにより、パーサーが破損し、アプリが強制終了されます。