XML エンティティは DOM で抽象化されます。コンテンツは、エンコーディングを気にする必要なく String で公開されます。ほとんどの場合、エンコーディングは必要です。
しかし、SAX はエンティティの処理方法をある程度サポートしています。XMLReader
カスタムでを作成しEntityResolver#resolveEntity
て、パラメータとして に渡すことができますSAXReader
。しかし、うまくいかないかもしれません:
パーサーは、最上位ドキュメント エンティティ (外部 DTD サブセット、DTD 内で参照される外部エンティティ、およびドキュメント要素内で参照される外部エンティティを含む) を除く外部エンティティを開く前に、このメソッドを呼び出します。
LexicalHandler
それ以外の場合は、エンティティが検出されたときに通知されるように SAX 用に構成しようとすることができます。Javadoc forLexicalHandler#startEntity
は次のように述べています。
一部の内部および外部 XML エンティティの開始を報告します。
解像度を変更することはできませんが、それでも役立つ場合があります。
編集
dom4j が提供するSAXReader
およびを使用して XML を読み書きする必要があります。XML ファイルの読み取りと XML ファイルの書き込みXMLWriter
を参照してください。ファイルを自分で使用したりダンプしたりしないでください。asXml()
FileOutputStream fos = new FileOutputStream("simple.xml");
OutputFormat format = OutputFormat.createPrettyPrint();
XMLWriter writer = new XMLWriter(fos, format);
writer.write(doc);
writer.flush();