XML与实体类(序列与反序列)
提供两种方式:
1. XmlDocument对象通过XmlReader反序列化为实体对象
xmlpath=System.Windows.Forms.Application.StartupPath+@"\books.xml";
XmlDocument doc = new XmlDocument();
doc.Load(xmlpath);
XmlReader reader = System.Xml.XmlReader.Create(new System.IO.StringReader(doc.OuterXml));
XmlSerializer xs = new XmlSerializer(typeof(Books));
Books config = xs.Deserialize(reader) as Books;
2. 通过文件流反序列xml文件
[XmlRoot("books")]
public class Books : List<Book>
{
public static Books LoadConfig(string file)
{
XmlSerializer xs = new XmlSerializer(typeof(Books));
StreamReader sr = new StreamReader(file);
Books config = xs.Deserialize(sr) as Books;
sr.Close();
return config;
}
public void SaveConfig(string file)
{
XmlSerializer xs = new XmlSerializer(typeof(Books));
StreamWriter sw = new StreamWriter(file);
xs.Serialize(sw, this);
sw.Close();
}
}
附上实体类:
[XmlType("book")] // used for books.Items
public class Book
{
private string _bookname;
[XmlAttribute("bookname")]
public string BookName
{
get { return this._bookname; }
set { this._bookname = value; }
}
private string _author;
[XmlAttribute("author")]
public string Author
{
get{ return this._author; }
set { this._author = value; }
}
private string _date;
[XmlAttribute("Date")]
public string Date
{
get { return this._date; }
set { this._date = value; }
}
}
XML样式:
<?xml version="1.0" encoding="utf-8" ?>
<books>
<book bookname="c++语言编程" author="AAAA" Date="2009"></book>
<book bookname="语言编程" author="BBBB" Date="2009"></book>
<book bookname="语言编程" author="CCCC" Date="2009"></book>
</books>