KML ではありませんが、System.Xml.Serialization の使用例を次に示します。
これら 2 つのクラス (属性を含む) と初期化を考えると、次のようになります。
[XmlRoot("BookList")]
public class BookList
{
[XmlElement("BookData")]
public List<Book> Books = new List<Book>();
}
public class Book
{
[XmlElement("Title")]
public string Title { get; set; }
[XmlAttribute("isbn")]
public string ISBN { get; set; }
}
var bookList = new BookList
{
Books = { new Book { Title = "Once in a lifetime", ISBN = "135468" } }
};
次のように xml にシリアル化できます。
var serializer = new XmlSerializer(typeof(BookList));
using (var writer = new StreamWriter("YourFileNameHere"))
{
serializer.Serialize(writer, bookList);
}
同等の Linq から Xml への変換は次のようになります (テストされていません)
XElement bookXML =
new XElement("BookList",
from book in bookList.Books
select new XElement("BookData",
new XElement("Title", book.Title),
new XAttribute("isbn", book.ISBN)
)
);
結論として、どちらも XmlDocument を使用するよりもクリーンで、XmlSerializer の方が短く、Linq to XML の方が柔軟性が高くなります (XmlSerializer は、クラス構造が xml 構造とどのように異なるかという点でかなり「厳格」です)。