我正在使用Android SAX解析器搜索相当大(6MB)的XML文件中的条目。我基本上使用清单8 here中所示代码的衍生物。我的问题是,一旦找到匹配项,我该如何停止解析?显示的代码继续解析文件的末尾,但我想在此之前停止。这是可能的还是我需要使用SAX以外的东西(例如XmlPullParser?)
答案 0 :(得分:1)
生成ArithmeticException并捕获它!
if (condition) { int a=1; a/=0; }
...
try {
Xml.parse(this.getInputStream(), Xml.Encoding.UTF_8, root.getContentHandler());
}
catch (ArithmeticException e) {
return true;
}
那太糟糕了但是有效......
答案 1 :(得分:0)
好DiskCrasher, 每个Sax解析器一般会工作到最后,但是如果你仍然想在工作中间退出它,你可以随时检查条件并使用return语句。
但更好的选择性解析方法是使用XML PullParser,因为这个解析器通常可以动态工作并在不加载整个文件的情况下为您提供数据。这样你就可以随时检查条件并退出循环,甚至不需要使用大内存块......
希望这对你有所帮助!!!
答案 2 :(得分:0)
您可以在获得匹配时抛出异常。异常可以捕获匹配信息,并将传播到原始的parse()调用方。捕获异常并测试它是否基于获得匹配或真正的解析错误并相应地处理。