.NET Framework轻松处理XML数据(四)

XMLTextWriter类

用在本节中的方法创建XML文档显然并不困难。多年以来,开发者都是通过在缓存在连接一些字符串,连接好以后再把缓存中字符串输出到文件的方式来创建XML文档。但是以这种方式创建XML文档的方法只有在你保证字符串中不存在任何细小的错误的时候才有效。.netFramework通过用XMLwriter提供了更好的创建XML文档的方法。

XMLWriter类以只前(forward-only)的方式输出XML数据到流或者文件中。更重要的是,XMLWriter在设计时就保证所有的XML数据都符合W3CXML1.0推荐规范,你甚至不用担心忘记写闭标签,因为XMLWriter会帮你写。XmlWriter是所有XMLwriter的抽象基类。.NETFramework只提供唯一的一个writer类----XmlTextWriter类。

我们先来看看XMLwriters和旧的writers的不同点,下面的代码保存了一个string型的数组:

StringBuilder sb = new StringBuilder("");
sb.Append("");
foreach(string s in theArray) {
sb.Append("
sb.Append(s);
sb.Append("\"/>");
}
sb.Append("");

代码通过循环取出数据中的元素,写好标签文本并把它们累加到一个string中。代码保证输出的内容是格式良好的并且注意了新行的缩进,及支持命名空间。当创建的文档结构比较简单时,这种方法可能不会有错误。然而,当你要支持处理指令,命名空间,缩进,格式化以及实体的时候,代码的数量就成指数级增长,出错的可能性也随之增长。

XMLwriter写方法功能对应每个可能的XML节点类型,它使创建xml文档的过程更符合逻辑、更少的信赖于繁琐的标记语言。图六演示了怎么样用XmlTextWriter类的方法来连接一个string数据。代码很简洁,用XMLwriter的代码更容易读、结构更好。

Figure 6 Serializing a String Array
void CreateXmlFileUsingWriters(String[] theArray, string filename)
{
// Open the XML writer (用默认的字符集)
XmlTextWriter xmlw = new XmlTextWriter(filename, null);
xmlw.Formatting = Formatting.Indented;
xmlw.WriteStartDocument();
xmlw.WriteStartElement("array");
foreach(string s in theArray)
{
xmlw.WriteStartElement("element");
xmlw.WriteAttributeString("value", s);
xmlw.WriteEndElement();
}
xmlw.WriteEndDocument();
// Close the writer
xmlw.Close();
}

时间: 2024-09-10 22:51:39

.NET Framework轻松处理XML数据(四)的相关文章

在.NET Framework中轻松处理XML数据(四)

xml|数据 XmlTextWriter类用在本节中的方法创建XML文档显然并不困难.多年以来,开发者都是通过在缓存在连接一些字符串,连接好以后再把缓存中字符串输出到文件的方式来创建XML文档.但是以这种方式创建XML文档的方法只有在你保证字符串中不存在任何细小的错误的时候才有效..NET Framework通过用XMLwriter提供了更好的创建XML文档的方法. XML Writer类以只前(forward-only)的方式输出XML数据到流或者文件中.更重要的是,XML Writ

.NET Framework轻松处理XML数据(二)

分析属性值 大部分情况下,属性值都是一个简单的文本字符串.然而,这并不意味着实际应用中的属性值都是字符型的.有时候,属性值是由许多种类型的数据组合而成的,例如Date或Boolean,这时,你就要用XMLConvert或System.Convevt类的方法把这些类型转换成原来的类型.XmlConvert和System.Convevt类都能实现数据类型的转换,但是XmlConvert类依据XSD中指定的数据类型进行转换,而不管它现在是什么类型. 假设你有以下的XML数据片断: 让我们先确认,bir

.NET Framework轻松处理XML数据(一)

在.netFramework中,XMLTextReader和XmlTextWriter类提供了对xml数据的读和写操作.在本文中,作者讲述了XML阅读器(Reader)的体系结构及它们怎样与XMLDOM和SAX解释器结合.作者也演示了怎么样运用阅读器分析和验证XML文档,怎么样创建格式良好的XML文档,以及怎么样用函数读/写基于Base64和BinHex编码的大型的XML文档.最后,作者讲了怎么样实现一个基于流的读/写分析器,它把读写器都封装在一个单独的类里. 大概三年前,我参加了一个软件研讨会

.NET Framework轻松处理XML数据(五)

设计XMLReadWriter类 如前面所说,XMLreader和Writer是各自独立工作的:reader只读,writer只写.假设你的应用程序要管理冗长的XML文档,且该文档有不确定的数据.Reader提供了一个很好的方法去读该文档的内容.另一方面,Writer是一个非常有用的用于创建XML文档片断工具,但是如果你想要它即能读,又能写,那么你就要用XMLDOM了.如果实际的XML文档非常庞大,又会出现了一个问题,什么问题呢?是不是把这个XML文档全部加载到内存中,然后进行读和写呢?让我们先

.NET Framework轻松处理XML数据(三)

带验证的阅读器 XMLValidatingReader类实现了XmlReader类,它提供了支持多种类型的XML验证:DTD,XML-DataReduced(XDR)架构,以及XSD,DTD和XSD都是W3C官方推荐的.而XDR是Microsoft早期用于处理XML构架的一种格式. 你可以用XmlVlidatingReader类去验证XML文档和XML片断.XmlValidatingReader类工作在XML阅读器上面---是一个典型的XMLTextReader类实例.XMLTextReade用

在.NET Framework中轻松处理XML数据(五)

xml|数据 设计XmlReadWriter类如前面所说,XML reader和Writer是各自独立工作的:reader只读,writer只写.假设你的应用程序要管理冗长的XML文档,且该文档有不确定的数据.Reader提供了一个很好的方法去读该文档的内容.另一方面,Writer是一个非常有用的用于创建XML文档片断工具,但是如果你想要它即能读,又能写,那么你就要用XMLDOM了.如果实际的XML文档非常庞大,又会出现了一个问题,什么问题呢?是不是把这个XML文档全部加载到内存中,然后进

在.NET Framework中轻松处理XML数据(三)

xml|数据 带验证的阅读器XmlValidatingReader类实现了XmlReader类,它提供了支持多种类型的XML验证:DTD,XML-Data Reduced(XDR)架构,以及XSD,DTD和XSD都是W3C官方推荐的.而XDR是Microsoft早期用于处理XML构架的一种格式. 你可以用XmlVlidatingReader类去验证XML文档和XML片断.XmlValidatingReader类工作在XML阅读器上面---是一个典型的XMLTextReader类实例.XM

在.NET Framework中轻松处理XML数据(一)

xml|数据 在.NET Framework中,XmlTextReader和XmlTextWriter类提供了对xml数据的读和写操作.在本文中,作者讲述了XML阅读器(Reader)的体系结构及它们怎样与XMLDOM 和SAX 解释器结合.作者也演示了怎么样运用阅读器分析和验证XML文档,怎么样创建格式良好的XML文档,以及怎么样用函数读/写基于Base64和BinHex编码的大型的XML文档.最后,作者讲了怎么样实现一个基于流的读/写分析器,它把读写器都封装在一个单独的类里.大概三年前,

在.NET Framework中轻松处理XML数据(二)

xml|数据 分析属性值 大部分情况下,属性值都是一个简单的文本字符串.然而,这并不意味着实际应用中的属性值都是字符型的.有时候,属性值是由许多种类型的数据组合而成的,例如Date或Boolean,这时,你就要用XmlConvert或System.Convevt类的方法把这些类型转换成原来的类型.XmlConvert和System.Convevt类都能实现数据类型的转换,但是XmlConvert类依据XSD中指定的数据类型进行转换,而不管它现在是什么类型. 假设你有以下的XML数据片