来自独立提供商的html文件包含如下标记:
<link href="//abc...." rel="stylesheet" type="text/css">
所以,最后/之前&gt;没有编码。它应该是&#34; ... /&gt;&#34;。 如何避免解析器在此异常上生成异常?
我的代码是:
try {
factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(false);
// updated, as suggested below
factory.setValidating(false);
factory.setFeature(Xml.FEATURE_RELAXED, true);
factory.setNamespaceAware(true);
parser = factory.newPullParser();
parser.setInput(is);
eventType = parser.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
String tagname = parser.getName();
// etc.
答案 0 :(得分:0)
您不应该使用XML pull解析器来解析不整齐的HTML,它永远不能保证可以工作。
无论如何,我对一个HTML大部分都没问题的网站进行了实验,我注意到自Android 3以来最新版本的KXmlParser(XMLPullParser的底层实现)比旧版本更严格,它们忽略了FEATURE_RELAXED标志。因此,如果您想要一个更宽容的XMLPullParser,您可以将Gingerbread版本的KXmlParser直接复制到您的项目中,并使用它来代替框架的版本。
答案 1 :(得分:0)
见BladerCoder的第一句话。谢谢。
这回答了我的问题。
*
您需要在获得拉动之前完全配置工厂 解析器实例:Factory使用其当前配置进行创建 实例
*
此外,只是处理源中偶然错误的例外工作正常。我无法影响(正确)创建源文件。