视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
通过C#动态生成图书信息XML文件
2020-11-27 22:40:32 责编:小采
文档


通过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)方法:给节点赋值。

3、其他代码

3.1 获取图书列表
代码如下:


/// <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;
}

3.2 图书信息实体类
代码如下:

/// <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; } //销售价格
}

下载本文
显示全文
专题