c# - C# XmlTextWriter 无法写入文件
问题描述
我的 XmlTextWriter 类有问题,我无法写入文件。
这是我正在创建的控制台应用程序,功能如下所示。
private void WriteXML()
{
Console.WriteLine("Writing");
using (XmlTextWriter writer = new XmlTextWriter("DataW.xml", System.Text.Encoding.UTF8))
{
writer.Formatting = Formatting.Indented;
writer.WriteStartDocument();
writer.WriteComment("This is a comment");
writer.WriteStartElement("WeeklyReview");
writer.WriteStartElement("DateTime");
writer.WriteStartAttribute("DateTime","09/04/2018 05:00");
writer.WriteElementString("Activity", "At Theodor");
writer.WriteElementString("Social", "Not Theodor,Theodor");
}
}
我得到的结果只是一个没有任何内容的文件。在 VS 2017 中,该文件以白色背景显示,其中没有任何内容。
我正在写入的文件位于解决方案资源管理器中,并且与我正在读取的文件位于同一位置(有效)。
解决方案
我猜您看到的问题是创建的 XML 文件是空白或不完整的。如果是这样,using
请在您的代码周围添加一条语句,如下所示:
using (XmlTextWriter writer = new XmlTextWriter("DataW.xml", System.Text.Encoding.UTF8))
{
writer.Formatting = Formatting.Indented;
writer.WriteStartDocument();
writer.WriteComment("This is a comment");
writer.WriteStartElement("Weekly Review"); //NB: A space in an element name!
writer.WriteStartElement("DateTime");
writer.WriteStartAttribute("09/04/2018 05:00"); //NB: a value given as an attribute name (consider: WriteAttributeString)!
writer.WriteElementString("Activity", "At Theodor");
writer.WriteElementString("Social", "Not Theodor,Theodor");
}
问题的原因是您调用写入底层流而不是文件系统的方法。要确保将数据写入文件系统,您需要调用该Flush
方法。Flush 在编写器关闭/处置时自动调用(但不是在它完成时)。该using
语句确保您writer
始终正确处理,因此将确保您的流被刷新到磁盘。
对于任何其他问题,您可能会抛出异常(例如,是否存在写入目标位置的文件访问问题)。如果您收到异常,请分享该消息,我们可以为此推荐解决方案。
附言。下面给出了由此创建的 XML/它不是有效的 XML,因此您将遇到其他问题。我会把这些留给你解决,或者如果你在那里有问题,你可以作为另一个问题提出。同时,您可以从文档中的示例中获得一些提示:https ://docs.microsoft.com/en-us/dotnet/api/system.xml.xmltextwriter.writestartattribute?view=netframework-4.7.2
<?xml version="1.0" encoding="utf-8"?>
<!--This is a comment-->
<Weekly Review>
<DateTime 09/04/2018 05:00="">
<Activity>At Theodor</Activity>
<Social>Not Theodor,Theodor</Social>
</DateTime>
</Weekly Review>
推荐阅读
- java - Java SHA-512 hash is not same python SHA-512 code with salt
- php - 试图在视图刀片中获取非对象的属性“id”
- php - 在 Laravel 中搜索导出为 PDF 后?
- sql - Missing Comma in SQL Command Oracle VM
- julia - DataFrame.jl 缺少插补(Julia 编程语言)
- c++ - 测试无意中从 gtest 中的不同测试套件合并
- java - Function.apply-Method 在自定义界面中没有被覆盖时会做什么?
- python - 使用 class 和 raise() 时的 Tkinter 帧大小
- python - ValueError:标签不在输入中。对于没有标签的预测示例,请改用基本模型
- node.js - Mongoose 模式类型二进制数据 - 类型转换