2006年08月23日

XMLファイルからのオブジェクトの生成がかなり簡単に行えるようになる方法

 .NETにはシリアライズというものがあります。簡単に言えばXMLとオブジェクトの相互変換を行う技術です。詳しくは@IT:連載:.NETで簡単XMLの「オブジェクトをXMLでシリアライズ」の部分を見ていただければと思います。

 シリアライズには、シリアライズ/デシリアライズがあり、シリアライズがオブジェクト→XML、デシリアライズがXML→オブジェクトになります。シリアライズにはタイプの情報(要はクラスのこと)が必要になります。オブジェクト先にありきの場合はタイプの情報のクラスがあるはずなので、比較的導入が簡単だと思います。XML先にありきの場合は、そのXMLに対応するクラスを作成しないといけないので、敷居が高くなります。

 今回はXMLファイルからシリアライズに必要なクラスの作成がかなり簡単にできる方法がわかったので紹介させていただき、XML先にありきの場合のシリアライズ導入の敷居が少しでも低くなればと思います。

 まず、XMLに対応するクラスの作成のため、XMLのXMLスキーマを生成する必要があります。これは、ここで行えます。このページの「XML Document:」の部分にXMLスキーマを生成したいXMLファイルを指定します。あとは「Generate XML Schema」ボタンを押せば、XMLスキーマの内容が表示されます。これを名前を付けて保存などで保存します。

 XMLスキーマからクラスファイルを作成するには、Visual Studio 2003以降に付属するxsd.exeを使用します。Visual Studio 2005 Expressシリーズだと「[Visual Studio 2005 Expressをインストールしたフォルダ]\SDK\v2.0\Bin\」にあります。

 XMLスキーマファイルからC#のクラスファイルを生成する場合

xsd [XMLスキーマファイル] /c /l:cs

となり、Visual Basic .NETのクラスファイルを生成する場合は

xsd [XMLスキーマファイル] /c /l:vb

となります。

 上記の場合は出力先を指定していないので、xsd.exeと同じフォルダにクラスファイルが出力されます。ファイル名はXMLスキーマファイル名が「schema.xsd」だったら、「schema.cs」、「schema.vb」などになります。コマンドラインオプションを追加することで出力先を指定することもできます。詳しくはコチラをご覧になって下さい。

 これで、クラスファイルが作成されたので、シリアライズができるようになりそうですが、まだ手順が必要です。xsd.exeで生成されたものだとSystem.Xml.Serialization.XmlRootAttributeの関係でうまくデシリアライズできない可能性がありますSystem.Xml.Serialization.XmlRootAttributeのNamespaceが実際のXMLファイルのものと合っていないとオブジェクトは生成されますが値が読み込まれません。

 クラスに、System.Xml.Serialization.XmlRootAttribute属性が設定されている部分の修正を行います。
Yahoo!オークション - カテゴリ情報 - サンプルレスポンスを例にとると、

    [System.Xml.Serialization.XmlRootAttribute(Namespace = "",
IsNullable = false)]
public partial class category
{
・・・
}
は、
    [System.Xml.Serialization.XmlRootAttribute(Namespace = 
"urn:yahoo:jp:auc:category", IsNullable = false)]
public partial class category
{
・・・
}
に、(cagegoryタグのxmlns属性の値を設定)
    [System.Xml.Serialization.XmlRootAttribute(Namespace = "",
IsNullable = false)]
public partial class childCategory
{
・・・
}
は、
    [System.Xml.Serialization.XmlRootAttribute(IsNullable = false)]
public partial class childCategory
{
・・・
}
とします。(「Namespace = ""」を削除)

 これでデシリアライズも行われ、値も読み込まれるようになると思います。

posted by よっしぃ at 23:19 | Comment(0) | TrackBack(0) | .NET

2006年08月18日

.NETでJSON作成とJSONからオブジェクトの作成が行えるライブラリ

 Json.NET - Newtonsoft

 .NETでJSON作成とJSONからオブジェクトの作成が行えるライブラリです。上記サイトの使用例のコード見てもらうとわかりますが、とても簡単に使えます。
タグ:JSON .net

posted by よっしぃ at 23:19 | Comment(0) | TrackBack(0) | .NET

.NET用のXML-RPCライブラリ

 XML-RPC.Net

 .NET用のXML-RPCライブラリです。上記サイトの使用例のコードを見てもらうとわかりますが、かなり簡単にXML-RPCの呼び出しが行えます。
タグ:XML-RPC .net

posted by よっしぃ at 23:19 | Comment(0) | TrackBack(0) | .NET

2006年08月09日

JavaScriptで動くテンプレートエンジン

 JavaScriptで動くテンプレートエンジン//d.hatena.ne.jp/shogo4405/20060727/1153977238" target=_blank>JSmartyというものがあります。PHPのSmartyのJavaScript版ということみたいです。これはとても興味深いですね。

posted by よっしぃ at 09:04 | Comment(0) | TrackBack(0) | JavaScript

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は1年以上新しい記事の投稿がないブログに表示されております。