私がJavaで表現しているオブジェクトは実際のXMLオブジェクトなので、それらをXMLにシリアル化するのは適切でしょうか?
私はあなたがDOMのようなものを意味すると思います。次に、XMLバインディングを使用してシリアル化します...DOMオブジェクトをPOJOとして扱います!!
悪い考え、IMO。
そうでない場合、なぜこれは(パフォーマンス上の理由を除いて)悪い考えになるのでしょうか?
- シリアル化と逆シリアル化のパフォーマンスが低下します。
- シリアル化されたフォームは肥大化します。
- 生成されたXMLは読み取り不能になります。
- シリアル化は、他のものが処理するのが困難になります。XSLT変換を試してみることを検討してください。イベントベースのパーサーを使用して処理することを検討してください。
実際、私はこれが良い考えかもしれないという理由を考えるのに苦労しています。
アップデート
なぜこれを行うのが納得できないのかについてのあなたの説明(あなたの更新/コメントで):
オブジェクトの論理的な実装がその物理的な実装と大きく異なる場合(BlochのEffective Java、アイテム75から)、カスタムのシリアル化されたフォームを検討することが適切な場合がよくあります。
Blochのアドバイスは、カスタム表現の使用を検討することです。そして、その中に暗黙のうちに、あなたが目の前にある標準的な表現よりも優れたカスタム表現を検討するという仮定があります。
私の場合、物理形式は論理形式とは大幅に異なり、カスタムシリアル表現が適切です。
そもそも、XMLでDOMを表現したい理由は説明されていません。または、なぜそれが優れていると思うのか。
オブジェクトは常にXMLで表現できるため、論理的には適切なようです...
あなたはその論理を説明していません。
...しかし、私はこれがJava言語(IEのパフォーマンス)に与える影響を理解しようとしています。
さて、その意味は私が上で説明した通りです。そして、これについてJava固有のものは何もありません。
OK、これを別の観点から見てみましょう。
- あなたはいくつかの情報を持っています。
- その情報をXMLで表します。
- XMLを解析して、メモリ内の表現(DOM)を取得します。
- jaxbのようなものを適用して、DOMのXML表現を提供します...POJOSとして表示されます
- DOMをシリアル化します。
最終的には、元の情報を表すXMLを表すJavaオブジェクトのXML表現になります。
これは、元の情報のXML表現よりもどのように優れていますか?
さて、おそらく、ステップ3でjaxbを使用し、カスタムJavaクラスに逆シリアル化した場合、それらのJavaクラスをシリアル化するのは理にかなっています。ただし、「XML要素を表すJavaオブジェクト」はありません。むしろ、元のXMLで表された情報を表すJavaオブジェクトがあります。
それはあなたが実際にあなたの質問に書いたものとは完全に異なるものです。そしてそれがあなたの意図することであるならば、それは人々があなたを理解しなかった理由を説明します...そしてあなたが実際に言っていることはほとんど/意味がないと思いました。