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上記のクラス定義で、以下のようなXMLファイルが生成されます。parts; } public class MyPart { [XmlAttribute] public int partId; [XmlAttribute, DefaultValueAttribute("")] public string partName; }
<?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>