2010-08-18 79 views
0

我正在使用Android SAX解析器来搜索相当大(6MB)的XML文件中的条目。我基本上使用清单8 here中显示的代码的衍生物。我有的问题是,如果我的匹配找到了,我该如何停止解析?显示的代码继续解析整个文件的末尾,但我想在此之前停止。这是可能的还是我需要使用SAX以外的东西(例如XmlPullParser?)当发现匹配时从Xml.parse退出

回答

0

那么DiskCrasher, 每个Sax解析器都会一直工作到结束,但是如果你仍然想在它的中间停止它工作中,您可以随时检查条件并使用返回语句。

但是更好的选择性解析方法是使用XML PullParser,因为这个解析器一般可以实时工作,并且在不加载整个文件的情况下为您提供数据。这样,您可以随时检查条件并退出循环,甚至无需使用大内存块...

希望这对您有帮助!

+0

谢谢,但我不能发出从匿名内部类return语句。 – 2010-08-18 23:54:12

0

当你得到一个匹配时,你可以抛出异常。异常可以捕获匹配信息并将传播到原始parse()调用者。捕获异常并测试它是否基于获得匹配或真正的解析错误并据此进行处理。

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; 
} 

这是可怕的,但它的工作原理...

+0

只需抛出一个未检查的异常,就像NullPointer或Arithmetic – Phate 2012-09-30 21:47:08

相关问题