XML 读取器和编写器将XML写入文件

如何将 XML 写入文件

此示例阐释如何使用 XmlTextWriter 类将 XML 写入文件。编写器可提供生成 XML 的快速、只进方法,并帮助您生成符合 W3C 可扩展标记语言 (XML) 1.0XML 中的命名空间规范的 XML 文档。XmlTextWriter 写入到流中,而不是使用对象模型(如 XML DOM),因此可提供更好的性能。

注意:有关如何使用 DOM 编写 XML 的更多信息,请参阅如何加载和使用 XmlDocument (W3C DOM)

 
VB WriteXmlFile.aspx

[运行示例] | [查看源代码]

通常情况下,如果您需要编写 XML 作为原始数据,则可以使用 XmlTextWriter,这样可不必使用 DOM。XmlTextWriter 是 XmlWriter 类的实现,该类提供将 XML 写入文件、流或 TextWriter 的 API。该类有许多验证和检查规则,以确保所编写的 XML 的格式正确。当与某些规则发生冲突时,将会引发异常,并且这些异常应该被捕获。XmlTextWriter 有不同的构造函数,每个函数指定写入 XML 数据的不同类型的位置。此示例使用的是将 XML 写入文件的构造函数。特别要说明的是,下列示例代码使用一个字符串构造 XmlTextWriter,该字符串表示 newbooks.xml 文件的位置。

XmlTextWriter myXmlTextWriter = new XmlTextWriter ("newbooks.xml", null);
            
C# VB  

除了文件名以外,此构造函数还使用您希望生成的编码。如果编码为"null",则编写器写出 UTF-8。有关 XML 文档中编码的使用方法的更多信息,请参阅 W3C XML 1.0 规范。

此示例代码的下一个片段使用单个书籍元素创建一个 XML 文件。它首先使用 Formatting 属性指定正被编写的 XML 数据的格式。通过将此属性设置为 Indented,编写器使用 Indentation 和 IndentChar 属性缩进子元素。

myXmlTextWriter.Formatting = Formatting.Indented;
            myXmlTextWriter.WriteStartDocument(false);
            myXmlTextWriter.WriteDocType("bookstore", null, "books.dtd", null);
            myXmlTextWriter.WriteComment("This file represents another fragment of a book store inventory database");
            myXmlTextWriter.WriteStartElement("bookstore");
            myXmlTextWriter.WriteStartElement("book", null);
            myXmlTextWriter.WriteAttributeString("genre","autobiography");
            myXmlTextWriter.WriteAttributeString("publicationdate","1979");
            myXmlTextWriter.WriteAttributeString("ISBN","0-7356-0562-9");
            myXmlTextWriter.WriteElementString("title", null, "The Autobiography of Mark Twain");
            myXmlTextWriter.WriteStartElement("Author", null);
            myXmlTextWriter.WriteElementString("first-name", "Mark");
            myXmlTextWriter.WriteElementString("last-name", "Twain");
            myXmlTextWriter.WriteEndElement();
            myXmlTextWriter.WriteElementString("price", "7.99");
            myXmlTextWriter.WriteEndElement();
            myXmlTextWriter.WriteEndElement();
            //Write the XML to file and close the myXmlTextWriter
            myXmlTextWriter.Flush();
            myXmlTextWriter.Close();
            
C# VB  

在创建该元素的过程中,以上示例代码还显示与每个 XML 节点类型相对应的 XML 编写方法。例如,编写一个元素将调用 WriteElementString 方法,编写一个属性将调用 WriteAttributeString 方法。对于嵌套级别,可以使用 WriteStartElement/WriteEndElement 对;如果要创建较复杂的属性,则可以使用 WriteStartAttribute/WriteEndAttribute 对。

当编写 XML 时,请注意该示例代码如何使用 WriteStartDocument 方法编写带版本号“1.0”的 XML 声明。如果要让编写器检查该文档的格式是否正确(先是 XML 声明,序言中的 DOCTYPE,只有一个根级别元素,等等),您必须在调用任何其他编写方法之前,调用此可选的 WriteStartDocument 方法。接着,此代码调用 WriteDocType 方法编写名为“bookstore”的文档类型。WriteDocType 调用中的第三个参数指定编写器将编写 SYSTEM“books.dtd”。编写完成后,XML 文件指示有一个要根据其进行验证的外部 DTD。

最后,示例代码调用 Flush 方法将 XML 数据保存到文件,然后才调用 Close 方法。(虽然此示例确实只需要 Close 方法,但是也存在这样的情况,即需要保存所生成的 XML,并且需要重复使用编写器。)

要检查 XmlTextWriter 的输出,可通过用 XmlTextReader 读取生成的文件来执行往返测试,以验证 XML 的格式是正确的。

摘要

  1. XmlTextWriter 提供生成 XML 的快速、只进方法。
  2. XmlTextWriter 可帮助您编写符合 W3C 可扩展标记语言 (XML) 1.0 规范和 XML 中的命名空间规范的 XML 文档。
  3. XmlTextWriter 提供将 XML 写入文件、流或 TextWriter 的构造函数。
  4. 每个 XML 节点类型都有对应的 XML 编写方法。
原文地址:https://www.cnblogs.com/chorrysky/p/584471.html