Android XML解析器导致Exception java.lang.AssertionError

8hhllhi2  于 2023-05-05  发布在  Android
关注(0)|答案(2)|浏览(199)

bounty已结束。回答此问题可获得+50声望奖励。赏金宽限期21小时后结束。amodkanthe正在寻找一个答案从一个有信誉的来源

Android XML解析器抛出Exception java.lang.AssertionError:错误。我怀疑下面是从com.android.org.kxml2.io.KXmlParser包抛出这个错误的代码。
Link to the code file**行号:**192
Android SDK有什么问题吗?或者我需要更改依赖项吗?
下面是我的xml解析代码

try {
        while (xmlPullParser.next() != XmlPullParser.END_TAG) {
            if (xmlPullParser.getEventType() == XmlPullParser.END_DOCUMENT) {
                throw new XmlPullParserException("XML END tag is missing");
            }
            if (xmlPullParser.getEventType() != XmlPullParser.START_TAG) {
                continue;
            }
            String name = xmlPullParser.getName();
            if (containsIn(name, tagNames)) {
                doSomething();
            } else {
                skip();
            }
        }
    } catch (XmlPullParserException | IOException e) {
        parseExceptionConsumer.accept(e);
    }

我在用

compileSdk 32

defaultConfig {
    minSdkVersion 19
    targetSdkVersion 32
    versionCode 1
    versionName project.version
    multiDexEnabled true
}

以下是错误日志

Exception java.lang.AssertionError:
at com.android.org.kxml2.io.KXmlParser.readEntity (KXmlParser.java:1192)
at com.android.org.kxml2.io.KXmlParser.readValue (KXmlParser.java:1402)
at com.android.org.kxml2.io.KXmlParser.next (KXmlParser.java:393)
at com.android.org.kxml2.io.KXmlParser.next (KXmlParser.java:313)
v1l68za4

v1l68za41#

堆栈跟踪表明,AssertionError被抛出是因为解析器试图读取一个XML entity reference(例如:"),但实体不是以&开头。要查明这是由解析代码还是由无效的XML引起的,必须提供XML(如注解中所要求的)。

hyrbngr7

hyrbngr72#

尝试在解析到XML解析器之前转义响应XML字符串

相关问题