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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

XML读取器和编写器----将XML写⼊⽂件
如何将 XML 写⼊⽂件
此⽰例阐释如何使⽤ XmlTextWriter 类将 XML 写⼊⽂件。

编写器可提供⽣成 XML 的快速、只进⽅法,并帮助您⽣成符合和规范的 XML ⽂档。

XmlTextWriter 写⼊到流中,⽽不是使⽤对象模型(如 XML DOM),因此可提供更好的性能。

注意:有关如何使⽤ DOM 编写 XML 的更多信息,请参阅
VB WriteXmlFile.aspx
[] | []
通常情况下,如果您需要编写 XML 作为原始数据,则可以使⽤ XmlTextWriter,这样可不必使⽤ DOM。

XmlTextWriter 是 XmlWriter 类的实现,该类提供将 XML 写⼊⽂件、流或 TextWriter 的 API。

该类有许多验证和检查规则,以确保所编写的 XML 的格式正确。

当与某些规则发⽣冲突时,将会引发异常,并且这些异常应该被捕获。

XmlTextWriter 有不同的构造函数,每个函数指定写⼊ XML 数据的不同类型的位置。

此⽰例使⽤的是将 XML 写⼊⽂件的构造函数。

特别要说明的是,下列⽰例代码使⽤⼀个字符串构造 XmlTextWriter,该字符串表⽰⽂件的位置。

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 可帮助您编写符合规范和规范的 XML ⽂档。

3. XmlTextWriter 提供将 XML 写⼊⽂件、流或 TextWriter 的构造函数。

4. 每个 XML 节点类型都有对应的 XML 编写⽅法。

相关文档
最新文档