通过C#动态生成图书信息XML文件

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

(0)

相关推荐

  • C#实现获取mp3 Tag信息的方法

    本文实例讲述了C#实现获取mp3 Tag信息的方法.分享给大家供大家参考,具体如下: using System; using System.Collections.Generic; using System.Text; using System.IO; namespace Foxer_Player_1._1 { public struct Mp3Info { public string identify; //TAG,三个字节 public string Title; //歌曲名,30个字节 p

  • C#编程实现动态改变配置文件信息的方法

    本文实例讲述了C#编程实现动态改变配置文件信息的方法.分享给大家供大家参考,具体如下: 配置文件实际上就是一个XML文件,所以我们可以使用XmlDocument来进行操作. 代码如下: static void Main(string[] args) { XmlDocument xDoc = new XmlDocument(); xDoc.Load("../../App.config");//加载xml文件 XmlNode xNode; XmlElement xElem1; XmlEle

  • C#获取程序文件相关信息的方法

    本文实例讲述了C#获取程序文件相关信息的方法,分享给大家供大家参考. 具体实现方法如下: using System.Reflection; using System.Runtime.CompilerServices; // // 有关程序集的常规信息是通过下列 // 属性集控制的.更改这些属性值可修改与程序集 // 关联的信息. // [assembly: AssemblyTitle("")] [assembly: AssemblyDescription("")]

  • C#定义的MP3播放类实例

    本文实例讲述了C#定义的MP3播放类.分享给大家供大家参考.具体分析如下: 这里使用C#定义一个MP3播放类,将Mp3文件作为资源文件包含到项目中,就可以播放mp3了 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO; using System.Runtime.InteropService

  • C#获得文件属性信息的实现方法

    本文实例演示了用Visual C#获取任意文件的属性信息,这些属性信息包括文件名.创建时间.访问时间.最后写入时间等等.本实例需要用到 FileInfo 类. FileInfo 类用于提供创建.复制.删除.移动和打开文件的实例方法,并且帮助创建 FileStream 对象. 主要功能代码如下: using System; using System.Drawing; using System.Collections; using System.ComponentModel; using Syste

  • C#实现简单播放mp3的方法

    本文实例讲述了C#实现简单播放mp3的方法.分享给大家供大家参考.具体实现方法如下: /// <summary> /// 测试 /// </summary> class TestDemo { public void Test() { clsMCI cm = new clsMCI(); cm.FileName = "alarm.mp3"; cm.play(); } } /// <summary> /// clsMci 的摘要说明. /// </s

  • C#获取指定文件著作权信息的方法

    本文实例讲述了C#获取指定文件著作权信息的方法.分享给大家供大家参考.具体分析如下: C#获得指定文件的著作权信息,通过FileVersionInfo可以获得很多关于文件的信息,包括著作权信息 using System; using System.Diagnostics; class MainClass { static void Main(string[] args) { FileVersionInfo info = FileVersionInfo.GetVersionInfo("c:\\a.

  • C#基于OLEDB获取Excel文件表结构信息的方法

    本文实例讲述了C#基于OLEDB获取Excel文件表结构信息的方法.分享给大家供大家参考,具体如下: 这个问题来自论坛提问,同理可以获得access等数据库的表结构信息. using System; namespace ConsoleApplication11 { class Program { public static void Main() { getExcelFileInfo( @" c:a.xls " ); } private static void getExcelFile

  • C#获取文件相关信息的方法

    本文实例讲述了C#获取文件相关信息的方法.分享给大家供大家参考.具体分析如下: C#可以通过FileInfo类可以获得指定文件的信息,包含文件的名字,大小等. FileInfo fi = new FileInfo(@"C:\file.txt"); if(fi.Exists) { Console.WriteLine("Filename : {0}",fi.Name); Console.WriteLine("Path : {0}",fi.FullNa

  • C#使用shell32获取文件属性的方法

    本文实例讲述了C#使用shell32获取文件属性的方法.分享给大家供大家参考.具体实现方法如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using Shell32; namespace GetFileCreator { class Program { static void Main(string[] args) { //要获取属性的文件路径 string fil

随机推荐