c# XmlWriter XmlTextWriter操作XML

转载 2012年03月23日 11:29:25
原本想基于XmlDocument自己写一个Xml编写器,但却发觉状态维护实在麻烦。在阅读《Applied Xml Programming for Microsoft .Net》时,意外发现XmlTextWriter的优越性,于是决定直接使用它进行开发。 

XmlWriter与XmlTextWriter的区别 
一开始我认为既然XmlTextWriter可以用,那XmlWriter也一定可以用,当我写完下面的语句时,编译器报错。 
XmlWriter doc=new XmlWriter();
原因很简单,XmlWriter是抽象类,自然不能直接实例化。看了书后才知道XmlTextWriter是XmlWriter接口的实现类,因此初始化语句改为 
XmlWriter doc=new XmlTextWriter();

这样就对了。  

常用函数说明 
1. WriteStartDocument() 
用于写Xml头声明,即<?xml version="1.0" encoding="utf-8">,如果使用该函数的重载函数WriteStartDocument(bool standalone),就可以设置声明的standalone属性,该属性表示该xml文档是否与其他文件独立,即是否需要单独声明节点。 
2. WriteEndDocument() 
该函数尽管不会向xml文件写任何文本,但必须在编写结束时调用,以结束写过程,它会清空XmlTextWriter中维护的所有堆栈和临时信息,类似于Dispose()函数。 
3. WriteStartElement() 
创建当前节点的一个子节点,通常使用WriteStartElement(string LocalName,string Value),其中LocalName表示节点名称,value表示节点的InnerText 
如:WriteStartElement("address","Tian Jing Road"); 
生成的xml:<address>Tian Jing Road</address> 
4. WriteEndElement() 
一旦使用过一句WriteStartElement()就必须有对应的WriteEndElement(),当WriteEndElement被执行后,当前指向的节点就会转为父节点,如: 
<shop> 
    <address>Tian Jing Road</address> 
</shop> 
在执行WriteStartElement("address","Tian Jing Road")后,当前指向<address>节点,在WriteEndElement被执行后,当前节点指向<shop>节点 
5. WriteStartAttribute()与WriteEndAttribute() 
与节点创建函数用法相同 
6. WriteAttributeString(string LocalName,string value) 
该函数用于创建属性,与WriteStartAttribute()不同的是它不需要EndAttribute(),直接使用就可以了。 
但要注意它与WriteStartAttribute生成的xml的不同之处,看下面的例子:

WriteStartElement("address");  
WriteStartAttribute(
"state","California"); 
WriteEndAttribute(); 
WriteEndElement();

以上代码生成的xml:<address d1p1:state="" xmlns:d1p1="California" />

WriteStartElement("address");  
WriteAttributeString(
"state","California"); 
WriteEndElement();

以上代码生成的xml: <address state="California" /> 

也就是说WriteAttributeString生成的是未处理的原始语句,而WriteStartAttribute()生成的是Xml Schema语句 
7. WriteElementString(string LocalName, string Value) 
与WriteAttributeString的用法相同,其中LocalName为节点名称,Value为节点的InnerText。 
8. WriteString()与WriteRaw()的区别 
    WriteString("More >")生成的Xml是More &gt 
    WriteRaw("More >")生成的xml是More > 
    也就是说WriteString会把敏感字符转换为转义字符,而WriteRaw()则是直接写入,不做任何处理
9. WriteCData()
    该函数是用来写用CData包裹的字符串,在字符串中有敏感字符时很有用
    WriteCData("More >")生成的Xml是<![CDATA [More >]] >
10.WriteFullEndElement()
    该函数用来写完整的结束标志,如<address></address>,
    writer.WriteStartElement("address", null);
    writer.WriteFullEndElement();


  
常用属性说明 
1.Formatting属性的默认值为Formatting.None

2.XmlTextReader.Indentation属性,表示缩近字符的字符数,Formatting属性为Formatting.Indented时,才会生效 
3.XmlTextReader.IndentChar才会生效,
IndentChar是缩近字符,一般使用’\t’,当Formatting属性为Formatting.Indented时,才会生效 
4.QuoteChar属性表示封闭字符,默认为双引号

C#中 XML 读写文件的方法(xmlreader,xmlwriter)

C#中xml读写文件的方法(xmlreader,xmlwriter)   using System;//写入 using System.Collections.Generic; ...

C#使用XmlWriter写入XML文件

 XmlWriter 表示一个编写器,该编写器提供一种快速、非缓存和只进的方式来生成包含 XML 数据的流或文件。 假设我们要写入以下结构的XML: BookList> Bo...

C# 简单的XML读取修改写入

XML概念 Root XML根节点,只能且必须有一个(以上为LinkLibrary) Element 节点元素(如Link) Attribute 节点属性(如Cat, Url, Desc) C...

使用XmlWriter时请注意Encoding

这两天用一个常用编辑的软件打开一个最近更新的xml配置文件时突然报编码错误,说不支持utf-16。看到这个错误,我愣了一下,这个软件不支持utf-16的xml我是知道的,但是这个xml配置文件可是用X...

C# 写入XML文档三种方法详细介绍

C# 写入XML文档三种方法详细介绍
  • hualele
  • hualele
  • 2016年12月27日 11:24
  • 2192

C#中XmlTextWriter读写xml文件详细介绍

 C#中XmlTextWriter读写xml文件详细介绍 作者: 字体:[增加 减小] 类型:转载 .NET中包含了很多支持XML的类,这些类使得程序员使用XML编程就...

c#以文件流的形式输出xml(可以解决内存溢出)-XmlTextWriter

1、XmlTextWriter 表示提供快速、非缓存、只进方法的编写器,该方法生成包含 XML 数据(这些数据符合 W3C 可扩展标记语言 (XML) 1.0 和“XML 中的命名空间”建议)的流或文...

XmlWriter与XmlTextWriter

 XmlWriter与XmlTextWriter的区别 一开始我认为既然XmlTextWriter可以用,那XmlWriter也一定可以用,当我写完下面的语句时,编译器报错。   Xml...

PHP操作xml(XMLWriter版)

php解析xml的一种比较高效的方式,文章的质量相比那些胡乱转载的文章要好许多,文章里的代码是自己亲手写的,不会有任何的错误。文章绝对值得一看。...

C#温故而知新学习系列之XML编程—3-Xml写入器XmlWriter类

前言    与XmlReader类相对应,.NETFramework也提供了一个以快速的,非缓存的,只向前的,动态写入XML数据的类即XmlWriter类,可以将XmlWriter类理解为与XmlR...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:c# XmlWriter XmlTextWriter操作XML
举报原因:
原因补充:

(最多只允许输入30个字)