之后有额外的垃圾导致 S-6ren">
gpt4 book ai didi

java - 忽略 "Content is not allowed in trailing section"SAXException

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:33:20 30 4
gpt4 key购买 nike

我正在使用 Java 的 DocumentBuilder.parse(InputStream) 来解析 XML 文档。有时,我会收到格式错误的 XML 文档,因为在最终的 > 之后有额外的垃圾导致 SAXException: Content is not allowed in trailing section。 (在我见过的情况下,垃圾只是一个或多个空字节。)

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

请注意,我所说的“忽略”不仅仅意味着捕获和忽略异常:我的意思是忽略尾随的垃圾,不抛出异常,并返回 Document 对象,因为 XML直到包括最后的 > 为止都是有效的。

最佳答案

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

如果情况只是您在结束标记后有额外的空字节,正如您对另一个答案的回应之一所指示的,这可能是您可以通过将输入流包装在 FilterInputStream 中轻松完成的事情 实现跳过空字节。

如果问题比空字符更复杂,您当然需要更复杂的过滤器,这可能很困难。

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

关于java - 忽略 "Content is not allowed in trailing section"SAXException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2815103/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com