C#動態生成XML
阿新 • • 發佈:2018-03-20
str 出版 打開 class append 表示 com gpo copyto
通過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; } //銷售價格
- }
C#動態生成XML