通过C#动态生成图书信息XML文件(Books.xml),文件如下:
- <?xml version="1.0" encoding="iso-8859-1"?>
 - <bookstore>
 - <book id="1" category="CHILDREN">
 - <title>Harry Potter</title>
 - <author>J K. Rowling</author>
 - <publishDate>2005-08-15</publishDate>
 - <price>29.99</price>
 - </book>
 - <book id="2" category="WEB">
 - <title>Learning XML</title>
 - <author>Erik T. Ray</author>
 - <publishDate>2003-10-18</publishDate>
 - <price>39.95</price>
 - </book>
 - </bookstore>
 - 方法1:使用StringBuilder拼接XML
 - /// <summary>
 - /// 创建图书信息XML
 - /// </summary>
 - public void CreateBookXML(string fileName)
 - {
 - StringBuilder xmlResult = new StringBuilder("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
 - List<BookInfo> bookList = GetBookList(); //获取图书列表
 - if (bookList != null && bookList.Count > 0)
 - {
 - xmlResult.Append("<bookstore>");
 - foreach (BookInfo book in bookList)
 - {
 - xmlResult.AppendFormat("<book id=\"{0}\" category=\"{1}\">", book.BookId, book.Category);
 - xmlResult.AppendFormat("<title>{0}</title>", book.Title);
 - xmlResult.AppendFormat("<author>{0}</author>", book.Author);
 - xmlResult.AppendFormat("<publishDate>{0}</publishDate>", book.PublishDate.ToString("yyyy-MM-dd"));
 - xmlResult.AppendFormat("<price>{0}</price>", book.Price);
 - xmlResult.Append("</book>");
 - }
 - xmlResult.Append("</bookstore>");
 - }
 - //写入文件
 - try
 - {
 - //1.创建文件流
 - FileStream fileStream = new FileStream(fileName, FileMode.Create);
 - //2.创建写入器
 - StreamWriter streamWriter = new StreamWriter(fileStream);
 - //3.将内容写入文件
 - streamWriter.WriteLine(xmlResult);
 - //4.关闭写入器
 - streamWriter.Close();
 - //5.关闭文件流
 - fileStream.Close();
 - }
 - catch (Exception e)
 - { }
 - }
 - 方法2:使用XmlTextWriter类创建XML
- /// <summary>
 - /// 创建图书信息XML
 - /// </summary>
 - /// <param name="fileName"></param>
 - public void CreateBookXML(string fileName)
 - {
 - try
 - {
 - FileStream fileStream = new FileStream(fileName, FileMode.Create);
 - XmlTextWriter writer = new XmlTextWriter(fileStream, Encoding.UTF8);
 - List<BookInfo> bookList = GetBookList(); //获取图书列表
 - if (bookList != null && bookList.Count > 0)
 - {
 - writer.WriteStartDocument();
 - writer.WriteStartElement("bookstore"); //创建父节点
 - foreach (BookInfo book in bookList)
 - {
 - writer.WriteStartElement("book"); //创建子节点
 - writer.WriteAttributeString("id", book.BookId.ToString()); //添加属性
 - writer.WriteAttributeString("category", book.Category);
 - //图书名称节点
 - writer.WriteStartElement("title");
 - writer.WriteValue(book.Title); //节点赋值
 - writer.WriteEndElement();
 - //图书作者节点
 - writer.WriteStartElement("author");
 - writer.WriteValue(book.Author);
 - writer.WriteEndElement();
 - //出版时间节点
 - writer.WriteStartElement("publishDate");
 - writer.WriteValue(book.PublishDate.ToString("yyyy-MM-dd"));
 - writer.WriteEndElement();
 - //销售价格节点
 - writer.WriteStartElement("price");
 - writer.WriteValue(book.Price);
 - writer.WriteEndElement();
 - writer.WriteEndElement(); //子节点结束
 - }
 - writer.WriteEndElement(); //父节点结束
 - }
 - writer.WriteEndDocument();
 - writer.Close();
 - fileStream.Close();
 - }
 - catch (Exception e)
 - { }
 - }
 - XmlTextWriter类:表示提供快速、非缓存、只进方法的编写器,该方法生成包含 XML 数据的流或文件。
WriteStartDocument()方法:编写XML的声明。
WriteEndDocument()方法:关闭任何打开的元素或属性并将编写器重新设置为 Start 状态。
WriteStartElement(string localName)方法:创建一个节点的开始。
WriteAttributeString(string localName, string value)方法:给节点添加属性。
WriteValue(value)方法:给节点赋值。 - 获取图书列表
 - /// <summary>
 - /// 获取图书列表
 - /// </summary>
 - /// <returns></returns>
 - public List<BookInfo> GetBookList()
 - {
 - List<BookInfo> bookList = new List<BookInfo>();
 - BookInfo book1 = new BookInfo() {
 - BookId = 1,
 - Category = "CHILDREN",
 - Title = "Harry Potter",
 - Author = "J K. Rowling",
 - PublishDate = new DateTime(2005,08,15),
 - Price = 29.99
 - };
 - bookList.Add(book1);
 - BookInfo book2 = new BookInfo()
 - {
 - BookId = 2,
 - Category = "WEB",
 - Title = "Learning XML",
 - Author = "Erik T. Ray",
 - PublishDate = new DateTime(2003,10,18),
 - Price = 39.95
 - };
 - bookList.Add(book2);
 - return bookList;
 - }
 - 
图书信息实体类
- /// <summary>
 - /// 图书信息实体类
 - /// </summary>
 - public class BookInfo
 - {
 - public int BookId { set; get; } //图书ID
 - public string Title { set; get; } //图书名称
 - public string Category { set; get; } //图书分类
 - public string Author { set; get; } //图书作者
 - public DateTime PublishDate { set; get; } //出版时间
 - public Double Price { set; get; } //销售价格
 - }