扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
要编写XML同样是采用流的概念,在.NET中编写XML的细节是作为XmlWriter类来实现的,但该类是抽象类不能够实例化,为此,我们要想在程序中访问它的方法以实现编写XML的愿望,必需使用它的派生类XmlTextWriter,该类提供了一系列的属性和方法为我们编写XML做准备,下面将详细的介绍这个类:
构造函数:
public XmlTextWriter(TextWriter);
public XmlTextWriter(Stream, Encoding);
public XmlTextWriter(string, Encoding);
第一个构造函数是把现有的TextWriter实例传递过去,System.IO.TextWriter类是一个有序的字符流
第二个构造函数是把要写入的流作为第一个参数,第二个参数是指定XML文档的编码方式,默认是UTF8,可取Encoding的枚举值,流可以是FileStream,MemoryStream,NetworkStream等等
第三个构造函数是把希望写入的文件名当作一个字符串(如果存在,就重写该文件)传递给第一个参数,第二个参数指定编码方式
常用的方法:
WriterStartDocument()和WriterEndDocument()方法:
第一个方法用来编写XML声明部分,如:
第二个方法用来关闭任何打开的元素或属性并将编写器重新设置为 Start 状态。
WriterStartElement()和WriteEndElement()方法:
第一个方法用来写出指定的开始标记,该方法有以下几个重载:
WriterStartElement(string localname)
使用传递的字符串作为元素的本地名称
WriterStartElement(string localname,string namespace)
第一个参数指定元素的本地名称,第二个参数指定元素所在的命名空间
WriterStartElement(string prefix,string localname,string namespace)
第一个参数指定元素的前缀,第二个参数指定元素的本地名称,第三个参数指定元素所在的命名空间
第二个方法用来写出与开始元素对应的关闭元素,如果开始元素不包含任何内容,将用一个”/>”做为关闭元素
WriterStartAttribute()和WriterEndAttribute()方法:
第一个方法用于编写一个属性的开头,该方法有两个重载: WriterStartAttribute(string localname,string namespace)
第一个参数指定属性的本地名称,第二个参数指定属性所在的命名空间
WriterStartAttribute(string prefix,string localname,string namespace)
第一个参数指定属性的前缀,第二个参数指定属性的本地名称,第三个参数指定属性所在的命名空间
第二个方法用于关闭WriterStartAttribute创建的属性
WriterElementString()方法:
该方法可以创建一个包含字符串值的元素,它有以下重载:
WriterElementString(string localname,string value)
如果编写这样的代码:WriterElementString(“para”,”Some text”) 将输出:
WriterElementString(string localname,string namespace,string value)
如果编写这样的代码:WriterElementString(“para”,”http://www.w3.org/ns”,”Some text”) 将输出:
如果编写嵌套几级的元素可使用WriterStartElement()和WriterEndElement()方法,如果编写直接包含内容的元素可以使用该方法
WriterAttributeString()方法:
类似与WriterElementString()方法,在使用上如果属性的值当中不包含实体可直接使用该方法来写出属性,如果属性值包含实体可使用WriterStartAttribute()和WriterEndAttribute()方法,例如要写出这样的XML——
WriterStartElement(“para”);
WriterStartAttribute(“author”,null);
WriterString(“Do”);
WriterCharEntiry(“~n”);
WriterString(“a”);
WriterCharEntiry(“&”);
WriterString(“L.Perez”);
WriterEndAttribute();
WriterEndElement();
该方法有以下重载:
WriterAttributeString(string localname,string value);
WriterAttributeString(string localname,string namespace,string value);
WriterAttributeString(string prefx, string localname,string namespace,string value);
WriterNode(XmlReader reader,bool defattr)方法:
该方法可以从XmlReader读取器中复制节点并把它们写入XmlWriter流中,第一个参数是XmlReader的实例,第二个参数接受一个布尔值,决定是否复制元素中的属性,考虑下面XML片段:
TheXmlWriterclass writes XML content to a Stream.
以下代码复制其中的片段,reader代表XmlReader的实例writer代表XmlWriter类的实例:
while(reader.Read())
{
if (reader.Name == ”sent” && reader.NodeType == XmlNodeType.Element)
}
得到以下输出:
TheXmlWriterclass writes XML content to a Stream.
WriterComment(string text)方法:用于写出注释
WriterString(string text)方法:用于写出文本
WriterCData(string text)方法:写出CDATA数据块
WriterBase64(byte[] buffer,int index,int count)方法:将指定的二进制字节编码为 Base64 并写出结果文本
Flush():将缓冲区中的所有内容刷新到基础流,并同时刷新基础流 Close():关闭此流和基础流
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者