请告诉我是否有可能打破解析过程?即退出此循环未到达文档和相应事件“endDocument”的结尾?Java。萨克斯分析器。如何手动中断分析?
回答
在处理程序抛出一个异常,并抓住它的代码块,你开始解析:
try {
...
xmlReader.parse();
} catch (SAXException e) {
if (e.Cause instanceof BreakParsingException) {
// we have broken the parsing process
....
}
}
而在你的DocumentHandler:
public void startElement(String namespaceURI,
String localName,
String qName,
Attributes atts)
throws SAXException {
// ...
throw new SAXException(new BreakParsingException());
}
顺便说一句:2年后,我开始认为我们不得不使用异常来控制流量是非常不幸的。打破解析过程在非错误情况下是完全有效的......如果有人找到更好的解决方案,我会很乐意阅读它! – chiccodoro 2012-08-24 07:16:12
抛出[SAXParseException]的子类(http://www.saxproject.org/apidoc/org/xml/sax/SAXParseException.html),您将在[ErrorHandler](http:// www。 saxproject.org/apidoc/org/xml/sax/ErrorHandler.html)。 – 2012-11-23 06:40:53
你必须抛出的SAXException。为了将它从常规错误中提取出来,我将使用我自己的Exception类继承它。
简单的解决方案是使用StAX解析 - 而不是SAX。虽然SAX推送解析 - 事件由解析器发送到处理程序,但StAX是解析,事件通过XMLEventReader提供给我们,可以使用类似于迭代器的事件。所以,实现有条件的break可以更容易地打破解析。
- 1. 用萨克斯解析器解析sgml
- 2. Java萨克斯分析用解析的值替换自定义标记
- 3. 在java中使用萨克斯分析器(Xerces)时的简单疑问
- 4. PHP萨克斯解析器和UTF-8
- 5. 管道两个萨克斯解析器?
- 6. 萨克斯当XML具有XSI分析异常:type属性
- 7. java萨克斯解析器mangles属性为XML 1.1
- 8. 萨克斯解析器如何验证dtd?
- 9. 黑莓萨克斯XML解析
- 10. 萨克斯在黑莓解析
- 11. Python2萨克斯分析器,大型文件的最佳速度和性能?
- 12. 良好的动手与NSight 3.0性能分析器/分析器
- 13. 萨克斯解析器循环中的错误
- 14. 解析图像到列表视图与萨克斯分析器和图像加载器类
- 15. 斯坦福分析器:frenchFactored.ser.gz
- 16. 斯卡拉分析器?
- 17. 斯芬克斯:链接词法分析器使用Pygments来做
- 18. 萨克斯XML解析器,开关不采取串
- 19. 萨克斯解析器的单元测试
- 20. 萨克斯解析器字符数组整数?
- 21. 萨克斯解析器与字符串xml +畸形错误
- 22. 萨克斯解析器与字符串输入
- 23. 如何手动重写Antlr4分析树?
- 24. 扑克手历史分析仪
- 25. 如何从萨克斯XmlHandler
- 26. Erlang分析器/分析器?
- 27. 动态分析 - CLR分析器?
- 28. 萨克斯在机器人
- 29. 流xml输入到萨克斯解析器,如何打印xml流?
- 30. 如何使用打字稿将萨克斯解析器导入到angular2
同样的这个问题http://stackoverflow.com/questions/1345293/how-to-stop-parsing-xml-document-with-sax-at-any-time – Brian 2010-06-03 08:38:23