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)方法:给节点赋值。 - 获取图书列表
- /// <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的更多相关文章
- 动态生成xml文件
使用xmlParser动态生成xml,输入的字符编码是gbk,结果怎么生成都不行,后来把输入转成utf8之后, 再生成就ok了
- Rss 订阅:php动态生成xml格式的rss文件
Rss 简介: 简易信息聚合(也 叫聚合内容)是一种描述和同步网站内容的格式.使用RSS订阅能更快地获取信息,网站提供RSS输出,有利于让用户获取网站内容的最新更新.网络用户可以在客户端借助于支持RS ...
- php7 使用dom动态生成xml文档
<?php $dom = new DomDocument('1.0','gb2312'); //创建DOM对象 $store = $dom->createElement('store'); ...
- silverlight 从数据库获取到数据,动态生成XMLWEN文件,并获取文件进行操作
// Silverlight中的独立存储是其内部的可信任的可访问文件空间,在这里你可以使用Silverlight随意的创建.读取.写入.删除目录和文件,它有一些类似于Cookie,但是它可以在客户端保 ...
- Java生成XML文件与XML文件的写入
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6651643.html 既然能在代码中解析XML文档获取数据,当然也能通过代码动态生成XML文档了. 与解析X ...
- C#动态生成图书信息XML文件
通过C#动态生成图书信息XML文件,下面有个不错的示例,需要的朋友可以参考下 通过C#动态生成图书信息XML文件(Books.xml),文件如下: 复制代码代码如下: <?xml version ...
- mybatis使用注解替代xml配置,动态生成Sql
mybatis使用注解替代xml配置时,遇到判断条件是否为null或者为空时,@Select很难搞定,不知道怎么办? mybatis3中增加了使用注解来配置Mapper的新特性,使用 SelectPr ...
- .net core将URL请求格式化为XML或JSON(网站动态生成sitemap.xml)
.net core将URL请求格式化为XML或JSON(网站动态生成sitemap.xml) 首先设置 Startup.cs 文件 配置 ConfigureServices services .Add ...
- 自己动手之使用反射和泛型,动态读取XML创建类实例并赋值
前言: 最近小匹夫参与的游戏项目到了需要读取数据的阶段了,那么觉得自己业余时间也该实践下数据相关的内容.那么从哪入手呢?因为用的是Unity3d的游戏引擎,思来想去就选择了C#读取XML文件这个小功能 ...
随机推荐
- VS MFC RADIO控件 选择
我们假设有两个RADIO控件:IDC_RADIO_SINGLE和IDC_RADIO_RANGE,我们的目的是默认选种IDC_RADIO_SINGLE控件. 方法一: CheckRadioButton( ...
- Linux内存管理之页面回收【转】
转自:http://blog.csdn.net/bullbat/article/details/7311205 请求调页机制,只要用户态进程继续执行,他们就能获得页框,然而,请求调页没有办法强制进程释 ...
- 配置Nginx来支持php
安装php7 下载地址:https://secure.php.net/downloads.php这里下载的是:wget http://ar2.php.net/distributions/php ...
- electron 安装使用
1.安装 node.js 链接:http://pan.baidu.com/s/1o7W7BIy 密码:y6od 一路next 我安装在F:\Program Files\node.js下 2.检查nod ...
- 免格式化制作老毛桃PE工具
由于移动硬盘数据很多,格式化制作太麻烦 先去老毛桃官网下载PE,生成ISO文件 将移动硬盘单独划分一个2G的空间用于装老毛桃,并格式化为FAT32格式,这样就避免全盘格式化了,只需要格式化这个分区 ...
- 计蒜客 25985.Goldbach-米勒拉宾素数判定(大素数) (2018 ACM-ICPC 中国大学生程序设计竞赛线上赛 B)
若干年之前的一道题,当时能写出来还是超级开心的,虽然是个板子题.一直忘记写博客,备忘一下. 米勒拉判大素数,关于米勒拉宾是个什么东西,传送门了解一下:biubiubiu~ B. Goldbach 题目 ...
- XTU | 人工智能入门复习总结
写在前面 本文严禁转载,只限于学习交流. 课件分享在这里了. 还有人工智能标准化白皮书(2018版)也一并分享了. 绪论 人工智能的定义与发展 定义 一般解释:人工智能就是用 人工的方法在 **机器( ...
- C语言基础之指针
1.指针的定义 格式:变量类型 *变量名; 1: // 定义了一个指针变量p 2: // 指针变量只能存储地址 3: // 指针就一个作用:能够根据一个地址值,访问对应的存储空间 4: // 指针变量 ...
- 在React组件unmounted之后setState的报错处理
最近在做项目的时候遇到一个问题,在 react 组件 unmounted 之后 setState 会报错.我们先来看个例子, 重现一下问题: class Welcome extends Compone ...
- 【Linux】CentOS7 alien命令 转化deb 与 rpm的相互转化
-d, --to-deb Make debian packages. This is the default. -r, --to-rpm Make rpm packages. -t, --to-tgz ...