生成XML文件
在你能更多地处理XML之前,你需要了解如何格式化XML文件,以及如果生成它。我假定你已经知道了如何格式化XML文件。列表2显示了生成XML的一个简单的方法。
列表2.使用.NET生成XML文件
System::Void btnGenerate_Click(System::Object * sender, System::EventArgs * e) { XmlTextWriter* DataWrite; // 执行实际的数据写入
// 建立数据写入程序 DataWrite = new XmlTextWriter(txtFilename->Text, System::Text::Encoding::UTF8);
// 写入XML头。当你把这个函数设置为true的时候,.NET建立独立的文档 DataWrite->WriteStartDocument(true); DataWrite->WriteWhitespace("\r\n");
// 描述测试文件 DataWrite->WriteComment("This is a test document."); DataWrite->WriteWhitespace("\r\n");
// 启动文档。你必须指定true来建立一个有根元素的新文档。 // 包含根元素失败将导致一个错误产生。 // 本示例包含了一个名字空间前缀、元素的本地名称和于名字空间关联的URL。 DataWrite->WriteStartElement("Data", "MyData", "http://www.mysite.com/"); DataWrite->WriteWhitespace("\r\n");
// 把数据写入文档 DataWrite->WriteElementString("DataString1", txtData->Text); DataWrite->WriteWhitespace("\r\n");
// 用特定的属性写入相同的数据 DataWrite->WriteStartElement("DataString2"); DataWrite->WriteAttributeString("AnAttribute", "AttributeValue"); DataWrite->WriteString(txtData->Text); DataWrite->WriteEndElement(); DataWrite->WriteWhitespace("\r\n");
// 终止起初的元素或文档的根元素。 DataWrite->WriteEndElement();
// 终止文档 DataWrite->WriteEndDocument();
// 关闭文档。该调用包括把缓冲区的内容写入磁盘的功能。 DataWrite->Close();
// 显示文档是完整的。 MessageBox::Show("File Generated", "XML Generation Results", MessageBoxButtons::OK, MessageBoxIcon::Information); } |
在这个例子中,你建立XmlTextWriter对象--DataWrite的时候, XML写入事务就开始了。你使用了特定的方法写入XML文档输出。.NET框架组件要求你使用某些方法生成良好格式化的XML。例如,你必须使用WriteStartDocument()方法来定义文档的开始,它是XML头。当你使用WriteEndDocument()方法来关闭这种标志,使用Close()把文档缓冲区的内容写入磁盘,并执行实际的文件关闭的时候,写入对话终止。
XML文档需要根元素。第一个WriteStartElement()调用和相关的WriteEndElement()调用建立这种根元素。示例给出了根元素中的两种类型的子元素。第一种演示了如何使用WriteElementString()方法写入把没有属性的字符串。第二种演示了如何使用WriteAttributeString()方法给元素添加属性。
示例也包含了少量可选的元素。有些开发者不关心输出文件是如何出现的,但是我通常在文本编辑器中查看输出。使用WriteWhitespace()方法添加一个回车符和制表符(如果希望的话)将使结果文件更容易在文本编辑器中阅读。当然,类似Internet Explorer的应用程序和Visual Studio IDE不会关心空格的。
你也可能希望在记录文件中包括注释。你可以使用WriteComment()方法完成这种事务。图1显示了输出在Internet Explorer中查看的时候看到的生成循环。
 图1.生成典型的XML数据的示例程序
|