在android中解析xml文件时,我这样做:
try
{
InputStream is = ...
MyContentHandler ch = new MyContentHandler();
Xml.parse(is, Encoding.UTF_8, ch);
}
catch ...
问题在于,有时我试图解析的文件格式不正确。 就我而言,可能存在未声明的命名空间。
我感兴趣的数据不在那些标签中,所以我可以简单地忽略它,但是我得到了一个未绑定的前缀的例外,不在内容处理程序内但在解析器本身;这意味着如果发生异常,整个解析过程就会中断。
有没有办法使用sax解析器忽略这种错误(或名称空间)?
P.S。我想避免将所有文件作为字符串加载到内存中,并从中删除名称空间,或者不得不重写文件。
答案 0 :(得分:1)
我在另一个帖子中找到了解决方案。
您需要通过SAXParserFactory手动实例化sax解析器并获取读者,而不是使用Xml.parse。
然后,您可以设置阅读器功能。
在可用的功能中,有一个会禁用名称空间,这就可以了。
参考 - > LINK