次のような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ドキュメントの正確なコピーを作成する方法です。