通过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) 
{ // www.jbxue.com
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 
{  // www.jbxue.com
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 
{  // www.jbxue.com
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文件的更多相关文章

  1. dom4j生成和解析xml文件

    dom4j生成和解析xml文件 要生成和解析如下格式的xml文件: <?xml version="1.0" encoding="UTF-8"?> & ...

  2. Visual Studio动态生成版权信息

    Visual Studio动态生成版权信息 VS2008 1.1,类文件模板:在安装目录打开CS模板文件夹(D:\Program Files (x86)\Microsoft Visual Studio ...

  3. 第三百三十四节,web爬虫讲解2—Scrapy框架爬虫—Scrapy爬取百度新闻,爬取Ajax动态生成的信息

    第三百三十四节,web爬虫讲解2—Scrapy框架爬虫—Scrapy爬取百度新闻,爬取Ajax动态生成的信息 crapy爬取百度新闻,爬取Ajax动态生成的信息,抓取百度新闻首页的新闻rul地址 有多 ...

  4. 十三 web爬虫讲解2—Scrapy框架爬虫—Scrapy爬取百度新闻,爬取Ajax动态生成的信息

    crapy爬取百度新闻,爬取Ajax动态生成的信息,抓取百度新闻首页的新闻rul地址 有多网站,当你浏览器访问时看到的信息,在html源文件里却找不到,由得信息还是滚动条滚动到对应的位置后才显示信息, ...

  5. Silverlight实用窍门系列:2.Silverlight动态加载外部XML指定地址的WebService---(动态加载外部XML文件中指定的WebService地址)【附带实例源码】

    接上节所讲的,Silverlight可以加载外部的XML文件里面的内容,那么我们可不可以在外部XML里面配置一个WebService地址,并且以此加载这个地址来动态加载WebService呢?这样子就 ...

  6. C++生成和解析XML文件

    1.xml 指可扩展标记语言(EXtensible Markup Language) 2.xml 是一种标记语言,类似html 3.xml 的设计宗旨是传输数据,而非显示数据 4.xml 标签没有被预 ...

  7. WF4.0以上使用代码完整自定义动态生成执行工作流Xaml文件

    给大家分享一下,如何完全使用代码自定义的创建生成工作流文件(用代码创建Xaml文件),并且动态加载运行所生成的工作流. 工作流生成后 在Xaml文件里的主要节点如下: 输入输出参数 <x:Mem ...

  8. C#生成、解析xml文件以及处理报错原因

    转载自:http://blog.csdn.net/lilinoscar/article/details/21027319 简单的介绍一下生成XML文件以及解析,因为有些数据不一定放到数据库,减少链接数 ...

  9. SSM 生成mapper中xml文件:未能解析映射资源:“文件嵌套异常

    错误日记我就网上随便找个贴着: 错误一: org.springframework.beans.factory.BeanCreationException: Error creating bean wi ...

随机推荐

  1. iOS开发——UI篇&提示效果

    提示效果 关于iOS开发提示效果是一个很常见的技术,比如我们平时点击一个按钮,实现回馈,或者发送网络请求的时候! 技术点: 一:View UIAlertView UIActionSheet 二:控制器 ...

  2. IOS开发之——颜色设置

    颜色设置: 指定RGB,參数是:红.绿.黄.透明度,范围是0-1 + (UIColor *)colorWithRed:(CGFloat)red green:(CGFloat)green blue:(C ...

  3. PHP 开发者该知道的5个 Composer 小技巧

    Composer是新一代的PHP依赖管理工具.其介绍和基本用法可以看这篇<Composer PHP依赖管理的新时代>.本文介绍使用Composer的五个小技巧,希望能给你的PHP开发带来方 ...

  4. 开源PaaS产品介绍

    简介 本文主要介绍一下PaaS领域两个著名的开源软件: Cloud Foundry和OpenShift. [广告]如果你喜欢本博客,请点此查看本博客所有文章:http://www.cnblogs.co ...

  5. 【Codeforces Round#279 Div.2】B. Queue

    这题看别人的.就是那么诚实.http://www.cnblogs.com/zhyfzy/p/4117481.html B. Queue During the lunch break all n Ber ...

  6. videojs 动态加载视频

    VideoJS dynamic source change via RESTful API 'Undefined' issue with changing RTMP source on compres ...

  7. [Laravel]配置路由小记

    Laravel:4.2 使用的后台是:laravel-backend php artisan routes 使用这个代码,可以看到显示目前项目的路由器 ,我需要添加功能,我就需要添加路由 /* |-- ...

  8. Web前端发展简史

    Web前端发展简史 有人说“前端开发”是IT界最容易被误解的岗位,这不是空穴来风.如果你还认为前端只是从美工那里拿到切图, JS和CSS一番乱炖,难搞的功能就去网上信手拈来,CtrlC + Ctrl ...

  9. Android——获取网络图片

    布局 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:too ...

  10. Cisco交换机中的flash,Rom,RAM,nvram的区别

    Flash内存,也叫闪存,是路由器当中常用的一种内存类型.它是可读写的存储器,在系统重新启动或关机之后仍能保存数据.Flash中存放着当前使用中的IOS(路由器操作系统). 只读内存(ROM)在Cis ...