我正在尝试创建一个xml文件。我已经设置了文档并在打印到控制台时使用Xmlwriter得到了结果但是当我在桌面上有一个实际的.xml文件时,我总是得到空文件。很明显,我错过了一些东西或遗忘了一些东西,但不能自己说出来。
下面是我的代码中所有发生的事情(不是)。
public void button1_Click(object sender, EventArgs e)
{
XmlDocument dddxml = new XmlDocument();
//XmlDeclaration xmldecl;
//xmldecl = dddxml.CreateXmlDeclaration("1.0", null, null);
//xmldecl.Encoding = "UTF-8";
//xmldecl.Standalone = "yes";
XmlWriterSettings settings = new XmlWriterSettings();
settings.Encoding = Encoding.UTF8;
settings.Indent = true;
StringBuilder builder = new StringBuilder();
writer = XmlWriter.Create(builder, settings);
writer.WriteStartDocument();
writer.WriteStartElement("root");
BlockSelect(0);
writer.WriteEndElement();
writer.WriteEndDocument();
writer.Close();
Console.WriteLine(builder.ToString());
writer = XmlWriter.Create("DddXml.Xml", settings);
dddxml.Save(writer);
File.Create(path);//declared elsewhere, valid file location string
}
答案 0 :(得分:2)
正如@Charles Mager评论的那样,File.Create()
只是创建一个空文件。
您可以尝试直接写入文件而不是使用StringBuilder。这是使用XmlWriter
直接写入文件的示例:
XmlWriter writer = XmlWriter.Create("C:\\ddxml.xml", settings);
writer.WriteStartDocument();
writer.WriteStartElement("root");
writer.WriteEndElement();
writer.WriteEndDocument();
writer.Close();
请参阅该文件是在C:\ ddxml.xml上编写的。
答案 1 :(得分:2)
您已在此处创建了新的XmlDocument
:
XmlDocument dddxml = new XmlDocument();
但是你没有在其余的代码中填充它,事实上你没有使用它并使用WriteStartDocument
和WriteEndElement
XmlWriter
方法将xml写入字符串构建器
因此,您的dddxml
仍为空,所以当您尝试将其保存为:
dddxml.Save(writer);
,没有什么可以保存的,你得到的是空文件。
所以你必须选择 - 你会使用XmlDocument
或XmlWriter
来创建和保存你的xml。
答案 2 :(得分:1)
如果你想要也可以使用LINQ,那就更容易了:
XDocument doc = new XDocument();
XNamespace ns = "";
doc.Add(new XElement(ns + "root"));
doc.Save(@"C:\DddXml.Xml");