【发布时间】:2011-01-25 15:40:04
【问题描述】:
如何强制 SAX 解析器(特别是 Java 中的 Xerces)在解析文档时使用 DTD,而输入文档中没有 any doctype?这甚至可能吗?
以下是我的场景的更多细节:
我们有一堆符合相同 DTD 的 XML 文档,这些 DTD 由多个不同的系统生成(我都无法更改)。其中一些系统将文档类型添加到其输出文档中,而其他系统则没有。有些使用命名字符实体,有些则不使用。 有些人使用命名的字符实体而不声明文档类型。我知道这不符合规定,但这是我必须使用的。
我正在开发需要用 Java 解析这些文件的系统。目前,它通过首先将 XML 文档作为流读取来处理上述情况,尝试检测它是否定义了 doctype,如果还没有,则添加一个 doctype 声明。问题是这段代码有问题,我想用更干净的代码替换它。
文件很大,所以我不能使用基于 DOM 的解决方案。我也在尝试解析字符实体,因此没有帮助使用 XML Schema。
如果您有解决方案,能否请您直接发布而不是链接到它?如果将来有一个带有死链接的正确解决方案,它对 Stack Overflow 并没有多大好处。
【问题讨论】:
标签: java dtd sax doctype xerces