处理 SAX 解析异常
我的 SAX xml 解析器有问题。 我想解析一个显然无效的 xml 文件(我得到一个 ExpatParser$ParseException: At line 5, column 169: not well-formed (invalid token))。我知道出了什么问题,但是 xml 文件不是我创建的...所以我无法更改它。
现在我想在我的 DefaultHandler 中处理该错误。但是 error() 、 fatalError() 和 warning() 都没有被调用...
我可以以某种方式中断解析过程,告诉解析器如何处理那段无效的 xml 并继续解析吗?
谢谢, 摩根大通
I have a problem with a SAX xml parser.
I want to parse a xml file which obviously is not valid (I get an ExpatParser$ParseException: At line 5, column 169: not well-formed (invalid token)). I know what is wrong, but the xml file ist not created by me...so I cant change it.
Now I want to handle that Error in my DefaultHandler. But neither error() nor fatalError() nor warning() is invoked...
Can I somehow interrupt the parsing process, tell the parser what to do with that piece of invalid xml and continue parsing???
Thanks,
JPM
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我猜想这个 SAXParseException 是 致命错误,SAX 解析器无法从中恢复。在这种情况下,您可能需要在尝试解析错误标签之前修复它(正如罗伯特在他的评论中建议的那样)。
您可能想考虑使用 Java Regex 来修复 XML 中已知的缺陷,例如
用于引用未加引号的 XML 属性的正则表达式
根据记录,我不是 提倡使用 正则表达式来实际解析XML!
I would guess that this SAXParseException is a fatal error that the SAX parser cannot recover from. In that case you probably need to fix up the bad tag before trying to parse it (as Robert suggests in his comment).
You might want to look into using a Java Regex to fix up the known badness in the XML, e.g.
Regex for quoting unquoted XML attributes
For the record, I am not advocating using regex to actually parse XML!