C# 简单的XML读取修改写入
XML概念
Root XML根节点,只能且必须有一个(以上为LinkLibrary)
Element 节点元素(如Link)
Attribute 节点属性(如Cat, Url, Desc)
Content 内容(非空白文本、CDATA、Element、EndElement、EntityReference 或 EndEntity)节点
System.Xml空间
以下类适合快速流式读写XML文件(注:DOM适合随机读写)
XmlReader, XmlWriter,
XmlTextReader, XmlTextWriter
XmlValidatingReader, XmlValidatingWriter 添加了DTD和模式验证,因此提供了数据的有效性验证
XmlNodeReader, XmlNodeWriter 把XmlNode作为其源
节点类型(public enum XmlNodeType)
XmlDeclaration XML 声明(例如,<?xml version="1.0"?>)。
Attribute 属性(例如,id="123")。
CDATA CDATA 节(例如,<![CDATA[my escaped text]]>)。
Comment 注释(例如,<!-- my comment -->)
Document 作为文档树的根的文档对象提供对整个 XML 文档的访问。
DocumentFragment 文档片段。
DocumentType 由以下标记指示的文档类型声明(例如,<!DOCTYPE...>)。
Element 元素(例如,<item>)。
EndElement 末尾元素标记(例如,</item>)。
Entity 实体声明(例如,<!ENTITY...>)。
EndEntity 由于调用 ResolveEntity 而使 XmlReader 到达实体替换的末尾时返回。
EntityReference 实体引用(例如,#)。
None 如果未调用 Read 方法,则由 XmlReader 返回。
Notation 文档类型声明中的表示法(例如,<!NOTATION...>)。
ProcessingInstruction 处理指令(例如,<?pi test?>)。
SignificantWhitespace 混合内容模型中标记间的空白或 xml:space="preserve" 范围内的空白。
Text 节点的文本内容。
Whitespace 标记间的空白。
------------------------------------------------------------------------
使用XmlTextWriter快速写入
------------------------------------------------------------------------
开闭
XmlTextWriter writer = new XmlTextWriter(@"c:/mywriter.xml", null);
writer.Close();
起止XML文档 (<?xml version="1.0"?>
writer.WriteStartDocument();
writer.EndDocument();
声明XML格式
writer.Formatting = Formatting.Indented;
writer.Indentation = 缩进字符数
writer.IndentChar = 缩进字符
writer.QuoteChar = 单引号|双引号
输出注释 (<!-- comment text -->)
writer.WriteComment("comment text");
输出元素 (<Element>ElementVal</Element>)
writer.WriteElementString("Element", "ElementVal");
或者
writer.StartElement("Element");
writer.WriteString("ElementVal");
writer.EndElement();
输出元素属性 (<Element Property="PropertyVal">ElementVal</Element>)
writer.StartElement("Element");
writer.WriteAttributeString("Property", "PropertyVal");
writer.WriteString("ElementVal");
writer.EndElement();
输出CDATA (<!CDATA>....</CDATA>
WriteCData("....")
输出字符缓冲区文本
WriteChars(char[], startPos, length)
已知有一个XML文件(bookstore.xml)如下:
<?xml version="1.0" encoding="gb2312"?> |
1、往<bookstore>节点中插入一个<book>节点:
XmlDocument xmlDoc=new XmlDocument(); |
//================
结果为:
<?xml version="1.0" encoding="gb2312"?> |
2、修改节点:将genre属性值为“李赞红“的节点的genre值改为“update李赞红”,将该节点的子节点<author>的文本修改为“亚胜”。
XmlNodeList nodeList=xmlDoc.SelectSingleNode("bookstore").ChildNodes;//获取bookstore节点的所有子节点 |
//=================
最后结果为:
<?xml version="1.0" encoding="gb2312"?> |
3、删除 <book genre="fantasy" ISBN="2-3631-4">节点的genre属性,删除 <book genre="update李赞红" ISBN="2-3631-4">节点。
XmlNodeList xnl=xmlDoc.SelectSingleNode("bookstore").ChildNodes; |
if(xe.GetAttribute("genre")=="fantasy")
{
xe.RemoveAttribute("genre");//删除genre属性
}
else if(xe.GetAttribute("genre")=="update李赞红")
{
xe.RemoveAll();//删除该节点的全部内容
}
}
xmlDoc.Save("bookstore.xml");
//====================
最后结果为:
<?xml version="1.0" encoding="gb2312"?> <bookstore> <book ISBN="2-3631-4"> <title>Oberon's Legacy</title> <author>Corets, Eva</author> <price>5.95</price> </book> <book> </book> </bookstore> |
4、显示所有数据。
XmlNode xn=xmlDoc.SelectSingleNode("bookstore"); |
------------------------------------------------------------------------
写例程
------------------------------------------------------------------------
- XmlTextWriter writer = new XmlTextWriter (filename, null);
- //Use indenting for readability.
- writer.Formatting = Formatting.Indented;
- //xml声明(Write the XML delcaration. )
- writer.WriteStartDocument();
- //预处理指示(Write the ProcessingInstruction node.)
- String PItext="type="text/xsl" href="book.xsl"";
- writer.WriteProcessingInstruction("xml-stylesheet", PItext);
- //文档类型(Write the DocumentType node.)
- writer.WriteDocType("book", null , null, "<!ENTITY h "hardcover">");
- //注释(Write a Comment node.)
- writer.WriteComment("sample XML");
- //根元素(Write a root element.)
- writer.WriteStartElement("book");
- //属性值(Write the genre attribute.)
- writer.WriteAttributeString("genre", "novel");
- //属性值(Write the ISBN attribute.)
- writer.WriteAttributeString("ISBN", "1-8630-014");
- //Write the title.
- writer.WriteElementString("title", "The Handmaid"s Tale");
- //Write the style element.
- writer.WriteStartElement("style");
- writer.WriteEntityRef("h");
- writer.WriteEndElement();
- //文本元素节点(Write the price.)
- writer.WriteElementString("price", "19.95");
- //[CDATA]
- writer.WriteCData("Prices 15% off!!");
- //Write the close tag for the root element.
- writer.WriteEndElement();
- writer.WriteEndDocument();
- //Write the XML to file and close the writer.
- writer.Flush();
- writer.Close();
- //Load the file into an XmlDocument to ensure well formed XML.
- XmlDocument doc = new XmlDocument();
- //Preserve white space for readability.
- doc.PreserveWhitespace = true;
- //Load the file.
- doc.Load(filename);
- //Display the XML content to the console.
- Console.Write(doc.InnerXml);
相关文章
- Interfaces (C# Programming Guide)
- c# 中内部类的简单介绍 C#内部类
- c#代码 天气接口 一分钟搞懂你的博客为什么没人看 看完python这段爬虫代码,java流泪了c#沉默了 图片二进制转换与存入数据库相关 C#7.0--引用返回值和引用局部变量 JS直接调用C#后台方法(ajax调用) Linq To Json SqlServer 递归查询
- C#订阅与发布标准实现 visual studio code .net 开发 设计模式之☞策略模式 C#字符串转二进制、二进制转字符串 c# 接口的协变和逆变 c# 使用迭代器来创建可枚举类型 博客园首页新随笔联系订阅管理 随笔 - 117 文章 - 0 评论 - 57 c# 创建,加载,修改XML文档
- C#中缓存的使用 ajax请求基于restFul的WebApi(post、get、delete、put) 让 .NET 更方便的导入导出 Excel .net core api +swagger(一个简单的入门demo 使用codefirst+mysql) C# 位运算详解 c# 交错数组 c# 数组协变 C# 添加Excel表单控件(Form Controls) C#串口通信程序
- C# DateTime的11种构造函数 [Abp 源码分析]十五、自动审计记录 .Net 登陆的时候添加验证码 使用Topshelf开发Windows服务、记录日志 日常杂记——C#验证码 c#_生成图片式验证码 C# 利用SharpZipLib生成压缩包 Sql2012如何将远程服务器数据库及表、表结构、表数据导入本地数据库
- C#不用union,而是有更好的方式实现 .net自定义错误页面实现 .net自定义错误页面实现升级篇 .net捕捉全局未处理异常的3种方式 一款很不错的FLASH时种插件 关于c#中委托使用小结 WEB网站常见受攻击方式及解决办法 判断URL是否存在 提升高并发量服务器性能解决思路
- c# 把一个匿名对象赋值给一个Object类型的变量后,怎么取这个变量? c# dynamic动态类型和匿名类 详解C# 匿名对象(匿名类型)、var、动态类型 dynamic 深入浅析C#中的var和dynamic
- Word处理控件Aspose.Words功能演示:使用 C# 将 Word 文档转换为 HTML
- C# -写个可可图片播放器
- 【C#】详解值类型和引用类型区别
- C#,水仙花数(Narcissistic number)的计算方法及源代码
- c#中使用XSLT将xml文档转换为html文档方法
- 信息: Loading XML bean definitions from class path resource [bean.xml]
- c# dt.AsEnumerable ().Join用法
- C# 生成XML 多级节点
- .Net那点事儿系列:C#操作Xml:通过XmlDocument读写Xml文档
- C#中要编辑DataGridView选中行,需要把选中行的DataGridViewRow转为DataRow
- C#中的 具名参数 和 可选参数
- C#中对xml数据的读取和写入
- c#后台常用知识
- C#中的循环结构
- c#操作xml文件
- C# CompareTo 和 String.Compare
- C#实现一个倒计时
- C#基础-实现URL Unicode编码,编码、解码相关整理
- C#-asp.net-Adding Bundling and Minification to Web Forms
- C# xml文件的创建,修改和添加节点 。
- 【C#】解析XML