using System;
using System.IO;
using System.Xml;
using System.Xml.Serialization;
using System.ComponentModel;
[XmlRoot("MyClass")]
public class MyClass
{
public int id;
public string name;
:
:
}
■ シリアライズ
MyClass myClass = new MyClass(); myClass.id = 1; myClass.name = "Yamada"; : : FileStream outputStream = new FileStream(outputFilePath, FileMode.Create); StreamWriter writer = new StreamWriter(outputStream, System.Text.Encoding.UTF8); XmlSerializerNamespaces outputNameSpace = new XmlSerializerNamespaces(); outputNameSpace.Add(String.Empty, String.Empty); XmlSerializer outputSerializer = new XmlSerializer(typeof(MyClass)); outputSerializer.Serialize(writer, myClass, outputNameSpace); writer.Flush(); writer.Close(); writer.Dispose(); outputStream.Dispose();上記のコードで、下記のXMLファイルが生成されます。
<?xml version="1.0" encoding="utf-8"?> <MyClass> <id>1</id> <name>Yamada</name> </MyClass>■ デシリアライズ
XmlSerializer serializer = new XmlSerializer(typeof(MyClass)); FileStream inputStream = new FileStream(inputFilePath, FileMode.Open); MyClass myClass = (MyClass)serializer.Deserialize(inputStream); inputStream.Close(); inputStream.Dispose();
| XmlRoot | ルート要素を指定します。 |
| XmlIgnore | 出力する必要のないメンバーを指定します。 |
| XmlElement | Elementとして出力するメンバーに付与します。[XmlElement("node_name")]のように記述して、ノード名を変更できます。 DefaultValueAttributeを指定するとデフォールト値を指定できます。デフォールト値に合致するものはXMLファイルに出力されません。 |
| XmlAttribute | 属性として出力するメンバーに付与します。[XmlAttribute("attr_name")]のように記述して、属性名を変更できます。 DefaultValueAttributeを指定するとデフォールト値を指定できます。デフォールト値に合致するものはXMLファイルに出力されません。 |
| XmlArray | 配列を指定します。下記の使用例を参照してください。 |
[XmlRoot("MyProduct")]
public class MyProduct
{
[XmlAttribute("ProductID")]
public int id;
[XmlAttribute]
public string name;
[XmlIgnore]
public Image photo;
[XmlElement("photo"), DefaultValueAttribute("")]
public string base64EncodedPhoto;
[XmlArray("parts"), XmlArrayItem(typeof(MyPart), ElementName = "part")]
public List parts;
}
public class MyPart
{
[XmlAttribute]
public int partId;
[XmlAttribute, DefaultValueAttribute("")]
public string partName;
}
上記のクラス定義で、以下のようなXMLファイルが生成されます。
<?xml version="1.0" encoding="utf-8"?>
<MyProduct ProductID="1023" name="PC">
<photo>iVBORw0KGgoAAAANSEAmYGAAAHF4H+EBgoqfAAmmC………</photo>
<parts>
<part partId="10" partName="Monitor" />
<part partId="11" partName="Keyboard" />
</parts>
</MyProduct>