0

そのため、 XMLEncoderを使用していくつかのDefaultStyledDocumentオブジェクトをシリアル化しようとしていました。それらは問題なくエンコードされますが、データを見ると、実際のデータはエンコードされず、クラスファイルが提供されるだけです。インターネットで調べたところ、多くの人がこれで問題を抱えていることがわかりましたが、役立つ解決策はありませんでした. 私が見た最良の答えは、「DefaultStyledDocument は適切な Bean ではないため、機能しません」でした。

では、バージョン間の問題に対処することなく、DefaultStyledDocuments をシリアル化できる方法はありますか? バイナリとテキストの両方が受け入れられます。

ここに私がやりたいことのいくつかのサンプルコードがあります:

DefaultStyledDocument content = new DefaultStyledDocument();
ByteArrayOutputStream stream = new ByteArrayOutputStream();
XMLEncoder encoder = new XMLEncoder(stream);
encoder.writeObject(content);
encoder.close();
stream.toString(); //This is the result of the encoding, which should be able to be decoded to result in the original DefaultStyledDocument

XMLEncoder を使用するか、他の方法を使用するかはあまり気にしません。機能する必要があるだけです。

4

1 に答える 1

0

XMLEncoder を使用してドキュメントをエンコードする必要はありません。Swing Text API の一部である EditorKits がその作業を行います。基本レベルのクラスである EditorKit には、read()write()メソッドの両方があります。これらのメソッドは、さまざまな sub-EditorKit によって拡張され、ドキュメントの読み書きが可能になります。ほとんどのドキュメントには、プログラマがドキュメントを読み書きできるようにする独自の EditorKit があります。

ただし、StyledEditorKit (DefaultStyledDocument の「独自の」EditorKit) では、読み書きが簡単にはできません。読み書きをサポートする RTFEditorKit を使用する必要があります。ただし、Swing の組み込み RTFEditorKit はうまく機能しません。そこで、誰かがここで入手できる無料の「高度な」エディタ キットを設計しました。AdvancedRTFEditorKit で DefaultStyledDocument を記述するには、次のコードを使用します (変数contentは DefaultStyledDocument です)。

AdvancedRTFEditorKit editor = new AdvancedRTFEditorKit();
Writer writer = new StringWriter();
editor.write(writer, content, 0, content.getLength());
writer.close();
String RTFText = writer.toString();

同様のプロセスを使用して、RTFEditorKit のメソッドで RTFDocuments を読み取ることができますread()

于 2015-03-28T05:41:19.667 に答える