给定这样的 XML 文档:
<!DOCTYPE doc SYSTEM 'http://www.blabla.com/mydoc.dtd'>
<author>john</author>
<doc>
<title>&title;</title>
</doc>
我想解析上面的 XML 文档并生成它的所有实体都已解析的副本。所以给定上面的 XML 文档,解析器应该输出:
<!DOCTYPE doc SYSTEM 'http://www.blabla.com/mydoc.dtd'>
<author>john</author>
<doc>
<title>Stack Overflow Madness</title>
</doc>
我知道您可以实现org.xml.sax.EntityResolver来解析实体,但我不知道如何正确生成 XML 文档的副本,并且所有内容都完好无损(实体除外)。一切,我的意思是空格、文档顶部的 dtd、注释以及除之前应该解决的实体之外的任何其他内容。如果这是不可能的,请提出一种至少可以保留大部分内容的方法(例如,所有但没有评论)。
另请注意,我仅限于 Sun 提供的纯 Java API,因此此处不能使用第三方库。
非常感谢!
编辑:上面的 XML 文档是其原始文档的简化版本。原始问题涉及使用 EntityResolver 的非常复杂的实体解析,我在这个问题中大大降低了它的重要性。我真正感兴趣的是如何使用使用 EntityResolver 解析实体的 XML 解析器生成 XML 文档的精确副本。