我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中,文件显示为白色背景,里面没有任何内容。
我要写入的文件位于解决方案资源管理器中,并且与我正在读取的文件位于同一位置。
答案 0 :(得分:6)
我猜您看到的问题是创建的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
,从而确保将流刷新到磁盘。
对于其他任何问题,您可能会引发异常(例如,是否存在文件写入目标位置的文件访问问题)。如果您收到例外情况,请分享该消息,我们可以为您推荐解决方案。
ps。在下面给出了由此创建的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>
答案 1 :(得分:0)
我知道这个问题很旧,但在 VB.net 中我得到了相同的结果。
我必须在最后调用 pi@node3:~ $ docker --version
Docker version 20.10.7, build f0df350
才能在我的文件中获取内容。