XStreamでオブジェクトをシリアル化する - TechRepublic

XStreamでオブジェクトをシリアル化する - TechRepublic

出版

davidpetersheimの画像

David Petersheim が、XStream が小さくシンプルな XML ファイルの解析と書き込みに最適な理由を説明します。サーバーの場所を知る必要があるアプリケーションの設定ファイルを XStream で読み取る方法を David が示す例をご覧ください。


XMLは、その支持者たちが主張したような万能薬ではありませんが、ITの世界では一定の地位を確立しており、
今後も長く存在し続けるでしょう。設定ファイルは、
XMLスキーマの(華やかではないものの)一般的な使用法です。企業のプログラマーにとって、
XML設定ファイルは本来あるべきほどアクセスしやすいものではありません。XMLは
単なるテキストですが、XMLを解析するために必要なオーバーヘッドは、
小規模なアプリケーションにとっては大きすぎる代償です。そこで、
XStreamが登場しました。

XStreamは、設定ファイルパーサーを専門とするものではありません。
開発者の言葉を借りれば、XStreamは「
オブジェクトをXMLにシリアル化し、またXMLに戻すためのシンプルなライブラリ」です。私はXStreamを見た瞬間、
長年抱えていた問題の少なくとも一つを解決してくれると確信しました。 設定ファイル
のような小さくてシンプルなXMLファイルのパースと書き込みに最適です。

ここでは、XStream を使用して、サーバーの場所を知る必要がある
架空のアプリケーションの構成ファイルを読み取る方法を示す簡単な例を示します。

設定ファイルは次のようになります。

<認証サーバー>
    <ポート>1080</ポート>
    <サーバー>ローカルホスト</サーバー>
</認証サーバー>

XML を読み取って
AuthServer 構成オブジェクトを作成するコードは次のようになります。

XStream xs = 新しい XStream();

xs.alias(“authServer”, AuthServerConfig.class);

AuthServerConfig asc = (AuthServerConfig) xs.fromXML(xml);

上記のコードは信じられないほど素晴らしいように見えますが、
そうではありません。XStream には外部依存関係がなく、
XML パーサーもマッピングファイルも必要ありません

XML からオブジェクトを取得したり、その逆を行ったりする簡単な方法を探している場合は、 XStream を調べて、 それが役立つかどうか確認してみる
価値があります。

関連するコードの例を次に示します。

java.util.Date をインポートします
。com.thoughtworks.xstream.XStream をインポートします。

パブリッククラス XStreamTip {
    プライベート静的文字列 xml =
          “<authServer>”

        +
” <port>1080</port>”
        +
” <server>localhost</server>”

        +
“</authServer>”;

    パブリック静的void main(String []args)
{
        XStream xs = new
XStream();

        xs.alias(“authServer”,
AuthServerConfig.class);

        AuthServerConfig
asc = (AuthServerConfig) xs.fromXML(xml);
        System.out.println(asc);

        System.out.println(xs.toXML(asc));

    }
}

クラス AuthServerConfig {
    プライベート int ポート;
    プライベート String サーバー;

    パブリック void setPort(int port) {
        this.port =
port;
    }

    パブリック int getPort() { this.port
        を返します
; }

    パブリック void setServer(String server)
{
        this.server =
server;
    }

    パブリック文字列 getServer() { this.server
        を返します。     } }


毎週木曜日に配信される無料のJavaニュースレターでは、このプログラミング言語の潜在能力を最大限に引き出すために必要な洞察と実践的なヒントをお届けします。今すぐ登録して、今すぐ始めましょう!

記事をシェア
davidpetersheimの画像

デビッド・ペータースハイム

Tagged: