XML操作
JavaでのXML操作はcastorを使用してできましたが、
.netの場合は、System.Xml.Serialization.XmlSerializerクラスを使用してできます。
(Compact framework2.0対応)
以下、手順
1.xmlに永続化するクラスを作成する。 1−1.引数の無いコンストラクタを作成することが必須。 例:タイトルと価格をフィールドにもつBookクラスをxmlに保存したい場合。 public class Book { public String title; public decimal price; public Book() { } }
2.XmlSerializerクラスを使用し、永続化対象オブジェクトをXMLにシリアル化する。 // 永続化オブジェクトの生成 Book book = new Book(); book.price = 100; book.title = "タイトル"; // XMLにBookクラスを書き込むという設定を行う System.Xml.Serialization.XmlSerializer serializer = new XmlSerializer(typeof(Book)); // // 書き込み // System.IO.FileStream fs = new System.IO.FileStream("\\book.xml", System.IO.FileMode.Create); serializer.Serialize(fs, book); fs.Close();
実行結果(book.xml)の内容
<?xml version="1.0"?> <Book xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <price>100</price> <title>タイトル</title> </Book>
…2008/01/07 以下、XMLからの読込み方法を追加
1.永続化するクラスを作成(書き込みと同じBookクラスを使用するため省略)
2.XmlSerializerクラスを使用し、XMLからクラスオブジェクトにデシリアル化する。 Book book = new Book(); book.title = ""; book.price = 0; System.Xml.Serialization.XmlSerializer serializer = new XmlSerializer(typeof(Book)); // ファイルオープン System.IO.StreamReader fs2 = new System.IO.StreamReader("\\book2.xml", System.Text.Encoding.GetEncoding(System.Text.Encoding.Default.WebName)); // 読込 book = (Book) serializer.Deserialize(fs2); fs2.Close();
book2.xmlの内容 <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Book xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <price>2100</price> <title>あ</title> </Book>
結果、「price=2100, title=あ」とXMLからbookオブジェクトに値が設定されました。