情報科学屋さんを目指す人のメモ(FC2ブログ版)

何かのやり方や、問題の解決方法をどんどんメモするブログ。そんな大学院生の活動「キャッシュ」に誰かがヒットしてくれることを祈って。

ブログ内検索

スポンサーサイト このエントリーを含むはてなブックマーク

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
スポンサー広告 | 編集

XML形式の設定ファイルを利用する このエントリーを含むはてなブックマーク

背景

プログラムの入力ファイル(設定ファイルなど)をXML形式にしたいとする。

XMLの形式を作成する

入力ファイル(設定ファイル)が非常に簡単な形式なら、今回のような工夫は必要ありません。しかし、本当に簡単な形式であったとすれば、そもそもXML形式である必要すらありません。そこで、今回は、とある項目があったりなかったり大規模であったり論理的な制約があるなど、XMLにするだけ複雑だとします。

そんなとき、まずはその複雑なXMLファイルの定義を作成する必要があります。今回は、その定義をXML Schemaという形式で作成します。作成したファイルの拡張子は.xsdです。.xsdファイルの書き方についてはいつか記事に出来ればと思っています。かなりとっかかりがつかみにくいので

XML Schema(.xsd)ファイルからC#のクラスファイルを作成する

.xsdファイルから.csファイルを作成します。この作成には、Visual Studioに含まれるXMLスキーマ定義ツール(xsd.exe)を利用します。Visual Studio 2008で確認すると、xsd.exeは「C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\xsd.exe」にあります。

そして、XMLSchema.xsdは、次のようにしてC#のクラスファイルに変換可能です。

>xsd.exe /l:cs /c XMLSchema.xsd

XMLSchema.xsdで定義されたXML Schemaに従って作成されたファイルは、生成されたC#のクラスにデシリアライズ可能です。しかし、XML Schemaを完全に反映したクラスファイルになっていない点に注意してください。たとえば、maxOccursなどは反映されないので、生成されたクラスを必ずしもXML Schemaに従ったXMLファイルにシリアライズ可能というわけではないみたいです。

また、生成するクラスの名前空間を指定したい場合は、指定したい名前空間が「MyNameSpace」のときは、次のようにすればOKです。

>xsd.exe /l:cs /c XMLSchema.xsd /n:MyNameSpace

シリアライズ・デシリアライズ

ここまで来れば、あとはシリアライズだろうがデシリアライズだろうが自由にやってあげてください。これについては、以下のmsdnが参考になります。

スポンサーサイト
.NET | コメント:0 | トラックバック:0 | 編集
 | HOME | 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。