データの入出力の簡略化
投稿日時 2015/05/03 22:49:23ゲストさん、こんにちは
高級アプリ製作の極意 ~WPF編~のお部屋へようこそ。
このお部屋では 第16章 の「 データの入出力の簡略化 」についてお話したいと思います。
アプリケーションの製作において
必然的になるものと言えばデータ入出力
もその一つです。
ここまで読み進めているゲストさんはもうアプリの1つや2つ作ったことがあるかもしれないですね
データの入出力処理はどうしていますか
昔、私は自分でCSVや手書きのXMLなどで入出力を行っていました
プログラムを組んで1つ1つの入出力処理を書くって
かなり重労働
なんですよね
今回紹介する簡略化を行うとデータの入出力のための処理は
短めのコード2行
で出来ます
(共通コードとして数十行書いたコードがあることが前提ですが)
今回紹介するのは
XMLのシリアライズとデシリアライズによるファイルの読み書き
についてです。
XMLシリアライズの利用の有無でどう違うのかまとめます。
XMLシリアライズを利用する
- クラス構造を書くだけでXMLファイルにメンバ変数の情報が入出力できる(利点)
- ファイルの入出力に関するコード記述が1度だけで使いまわせる(利点)
- 読み込みトラブルが発生しにくい(利点)
- クラスのインスタンスを直接変換されるので扱いやすい(利点)
- クラス構造に名前を付けておくことで自由なタグ名やアトリビュート名が付けられる(利点)
- クラス構造にルールを設けて記述を行う必要がある(難点)
- 読み込みトラブルに失敗した時に何が原因か分かりにくい(難点)
- ファイルサイズが大きくなりやすい(難点)
XMLシリアライズを利用しない
- 自由な形式のフォーマットで出力できる(利点)
- ファイルサイズを小さく出来る(利点)
- 読み込みトラブルが発生しても原因を特定しやすい(利点)
- 実装にコストが掛かる(難点)
- メンバ変数追加の度に変数からの読み込みや書きだし対応が必要(難点)
- 複雑なデータ構造にするとメンテナンスが大変(難点)
サンプルダウンロード
サンプルイメージ画像
4つのメンバ変数を持つクラスをUIに割り当てました。
開くボタンでXMLファイルを読み込みUIへ直接反映します。
保存は入力されている情報をXMLへ書き込みします。
↑XML中身はこんな感じです↑(横長だったので改行入れてます)
今回はシンプルなデータでしたので4つのアトリビュートを持つ1つのクラスで構成されています。
エレメントを持たせたり階層構造にするとより
複雑なXMLファイルが入出力出来る
ようになります
コードを見て頂くとお分かりになると思いますが、変数名とXMLに出力されている名前は別扱いしています。
変数名直接だと見難くなったりもするのでアトリビュート名を記述して分かり易くしています。
直近記事のリンク
< | データの保護 | | | スレッドを利用した分散処理 | > |