2011-10-18 5 views
0

私はこの問題に1週間苦労しています。私は電子ブックを編集できるjavaでプログラムを書こうとします。私の選ばれた電子ブックフォーマットは、xmlのようなファイルにそのデータを含むフィクションブックです。私はこのファイルを開き、JTextComponentでsourceviewを生成することができます。私のエディタのプレビューとソースビューには2つのトグルボタンがあります。同じJTextComponentを使用して表示します。ユーザーがソースビューをクリックすると、選択されたファイルソース(プレーンxml)が表示されます。このソースからプレビューを生成するには、表示する必要のあるデータを解析します。ソースビューで何かを変更すると、プレビューにも表示されます。そこから生成されたものですから、どうやって逆向きにすることができますか?プレビューで何かを変更すると、ソースでも変更されます。XML JdomをJavaで解析して編集する

答えて

0

JDOM固有の質問としてこれを見るのは難しいです。根底にある表現は、ほとんど何でもよい。通常、プレビューはそれだけです。直接編集できない最終結果のビューです。ソースとWYSIWYGビューの両方を編集できるようにするには、model-view-controllerパターンを調べる必要があります。

基本となるXMLがあなたのモデルです。 XMLエディタビューとWYSIWYGビュー(現在のプレビュー)の両方がビューとコントローラになります。現在のところ、XMLエディタの場合のみですが、プレビューはビューにすぎません。

プレビューから基本となるXMLを変更するのは、各ノードが何らかの形で識別できる場合(id属性など)には困難です。この結合を別の方向に行うには、プレビューに基礎データを追加する必要があります。

私はJDOMドキュメントがあなたの目的に最も適したモデルであるとは確信していません。おそらく、JAXBのようなものを使って単純なJavaBeansを使ってモデルを表現し、XMLにマーシャリングしたり、XMLからアンマーシャリングしたりする方がよいかもしれません。だからあなたは:

    model: JavaBeans with JAXB annotations 
        ^
         | 
    (directly) +--------------------------------------+ (through JAXB) 
       |          | 
WYSIWYG editor: view + controller    XML editor: view + controller 

しかし、それは私の最初の印象です。既存のエディタを調べて、これを実行するための良い方法を見つけます。 IDEでは通常、複数のタイプのエディタが基になるデータモデルを変更できるため、IDEプラグイン/モジュールをチェックするのは面白いかもしれません。

+0

お返事ありがとうございます。それはJAXBにますます役立ってきました。以前のソリューションよりも私の問題がはるかに優れていることがわかりました。再度、感謝します。 – Halufolia

+0

クール。 JAXBは、JavaBeansと対応するXMLのDOMを同期させる方法を提供していると思います。つまり、片方の変更が他方に伝播することを意味します。これは役に立つかもしれない。私はまだこれを試していないし、おそらくDOMはまさにあなたが望まないものですが、それは良いリードになるかもしれません。 –

関連する問題