您的位置:首页 > 其它

XmlTextWriter学习笔记

2005-05-12 08:38 423 查看
转载:/article/4620532.html

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

XmlWriter与XmlTextWriter的区别

一开始我认为既然XmlTextWriter可以用,那XmlWriter也一定可以用,当我写完下面的语句时,编译器报错。XmlWriter doc=new XmlWriter();

原因很简单,XmlWriter是抽象类,自然不能直接实例化。看了书后才知道XmlTextWriter是XmlWriter接口的实现类,因此初始化语句改为

XmlWriter doc=new XmlTextWriter();

这样就对了。 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 >

    WriteRaw("More >")生成的xml是More >

    也就是说WriteString会把敏感字符转换为转义字符,而WriteRaw()则是直接写入,不做任何处理

9. WriteCData()

    该函数是用来写用CData包裹的字符串,在字符串中有敏感字符时很有用

    WriteCData("More >")生成的Xml是<![CDATA [More >]] >

 常用属性说明

1.Formatting属性的默认值为Formatting.None

2.XmlTextReader.Indentation属性,表示缩近字符的字符数,当Formatting属性为Formatting.Indented时,才会生效

3.XmlTextReader.IndentChar才会生效,IndentChar是缩近字符,一般使用’\t’,当Formatting属性为Formatting.Indented时,才会生效

4.QuoteChar属性表示封闭字符,默认为双引号

Feedback

# re: XmlTextWriter学习笔记(1)   

2005-01-26 14:47 by myx

好,我对xml也是一知半解的。有空也要好好学习这些基本的东西

# re: XmlTextWriter学习笔记   

2005-02-04 12:48 by weko

多谢分享

# re: XmlTextWriter学习笔记   

2005-05-05 14:59 by skyblue

我想知道对于没有内容的标签 如何使其成对出现

WriteStartElement("address");

WriteEndElement();

我用这样的

输出的是

<address />

而我想生成的是<address></address>

以方便后期添加内容.

# re: XmlTextWriter学习笔记   

2005-05-05 20:49 by Tony Qu

如果你要生成的格式中允许多余空格的话,你可以试试这样写:

WriteStartElement("address"," "); //第二个参数是一个空格

WriteEndElement();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: