处理SAX解析器异常

3
我有一个SAX xml解析器的问题。 我想解析一个明显无效的xml文件(我得到了ExpatParser$ParseException: 在第5行,第169列:格式不正确(无效的标记))。我知道出了什么问题,但这个xml文件不是我创建的...所以我不能改变它。 现在我想在我的DefaultHandler中处理这个错误。但是error()、fatalError()和warning()都没有被调用... 我能否以某种方式中断解析过程,告诉解析器如何处理那个无效的xml片段并继续解析? 谢谢, JPM

如果我是你,我会编写一些清理代码,在将XML传递给SAX解析器之前进行处理...或者告诉你的数据源尽可能修复他们的XML,因为修复一个小的语法错误只需要他们三秒钟。 - Robert Massaioli
我遇到了完全相同的问题... https://dev59.com/PFbTa4cB1Zd3GeqP8z_R - Vaibhav Jani
这有点像生活给你柠檬;SAX解析器无法用柠檬制作苹果汁。为了记录,这是对那个给你柠檬的家伙的适当回应:“我不要你的该死的柠檬!这到底是什么?!要求见生命的经理!让生命后悔它曾经认为可以给Cave Johnson柠檬!你知道我是谁吗?我就是那个要烧掉你房子的人!用柠檬烧掉你的房子!我会让我的工程师们发明一种可燃的柠檬,烧掉你的房子!”(《传送门2》) - Robert Massaioli
http://stackoverflow.com/questions/4574710/xml-parsing-from-non-xml-document/4575099#4575099 - Mads Hansen
1个回答

1

我猜测这个SAXParseException是一个致命错误,SAX解析器无法从中恢复。在这种情况下,您可能需要在尝试解析之前修复不良标记(如Robert在评论中建议的那样)。

您可能需要考虑使用Java Regex来修复XML中已知的错误,例如:
Regex for quoting unquoted XML attributes

值得注意的是,我主张使用regex to actually parse XML


谢谢Dan和Robert, 我想我会这样做。由于xml非常简单,我也许可以手动解析它...但我必须先处理其他事情。但我认为其中一种方法将解决我的问题(我仍然希望我们能够获得源代码,投资2秒钟来修复他们的xml :-))谢谢, JPM - jpm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接