加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 忽略“尾随节中不允许内容”SAXException

发布时间:2020-12-15 03:00:38 所属栏目:Java 来源:网络整理
导读:我正在使用 Java的DocumentBuilder.parse(InputStream)来解析XML文档.偶尔,我会得到格式错误的XML文档,因为在最终的之后会有额外的垃圾.导致SAXException:在尾随部分中不允许使用内容. (在我看到的情况下,垃圾只是一个或多个空字节.) 我不在乎最后的后是什
我正在使用 Java的DocumentBuilder.parse(InputStream)来解析XML文档.偶尔,我会得到格式错误的XML文档,因为在最终的>之后会有额外的垃圾.导致SAXException:在尾随部分中不允许使用内容. (在我看到的情况下,垃圾只是一个或多个空字节.)

我不在乎最后的>后是什么.有一种简单的方法可以用Java解析整个XML文档并让它忽略任何尾随垃圾吗?

请注意,通过“忽略”我不仅仅意味着捕获并忽略异常:我的意思是忽略尾随垃圾,不抛出任何异常,并返回Document对象,因为XML包括最终的>已验证.

解决方法

由于您的发件人向您提供了无效的XML,因此如果您想要避免此异常,则需要在它到达解析器之前进行更正.如果您无法更正发件人,则需要某种预处理步骤.

如果情况只是你在结束标记之后有一个额外的空字节,因为你对另一个答案的一个回复所定义,这可能是你可以通过将输入流包装在你实现的跳过null的FilterInputStream中轻松实现的字节.

如果问题比空字符更复杂,那么你当然需要一个更复杂的过滤器,这可能很难.

如果您正在使用ContentHandler,则可以向其添加回调,以便在处理完结束根标记时它可以通知调用代码,并且基于该知识,调用代码可以在其处理程序中具有异常的逻辑如果结束已发出信号,则简单地忽略它.那时,解析器必须完成的任何事情都可能已经完成了!但是这个解决方案似乎并不适用于您的情况.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读