忽略“内容不被允许在尾部”SAXException
我使用Java的DocumentBuilder.parse(InputStream)
来解析XML文档。 偶尔,我会得到格式不正确的XML文档,因为在最终导致SAXException: Content is not allowed in trailing section
的最后一个>
之后会有额外的垃圾SAXException: Content is not allowed in trailing section
。 (在我看到的情况下,垃圾只是一个或多个空字节。)
我不在乎最后的成绩>
。 有没有简单的方法来解析Java中的整个XML文档,并让它忽略任何后续垃圾?
请注意,通过“忽略”,我不是简单地意味着要忽略和忽略异常:我的意思是忽略尾随垃圾,不会抛出异常,并返回Document
对象,因为XML最多包含最后的>
是有效的。
由于您的发件人正在向您显示无效的XML,因此如果您想避免此异常,则需要在它碰到解析器之前进行更正。 如果您无法更正发件人,则需要进行某种预处理步骤。
如果情况仅仅是在结束标记之后有一个额外的空字节,如其他答案的答复所指示的那样,则可以通过将输入流包装到您实现的FilterInputStream
中来轻松完成此操作,以便跳过null字节。
如果问题比空字符更复杂,则当然需要更复杂的过滤器,这可能很困难。
如果您使用的是ContentHandler
,则可以向其添加回调,以便在处理结束根标记时通知调用代码,并根据这些知识,调用代码可以在其处理程序中为异常如果结束已经发出信号,就简单地忽略它。 在这一点上,解析器必须完成的任何事情都可能已经完成! 但是这个解决方案似乎不适用于你的情况。
否。包含尾随字符的文档不是XML文档。 修复发件人。
链接地址: http://www.djcxy.com/p/899.html上一篇: Ignoring "Content is not allowed in trailing section" SAXException