XML解析错误:找不到元素消息和空文档创建

时间:2015-07-24 07:30:12

标签: c# .net xml

我正在尝试创建一个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
    }

3 个答案:

答案 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();

但是你没有在其余的代码中填充它,事实上你没有使用它并使用WriteStartDocumentWriteEndElement XmlWriter方法将xml写入字符串构建器

因此,您的dddxml仍为空,所以当您尝试将其保存为:

dddxml.Save(writer);

,没有什么可以保存的,你得到的是空文件。

所以你必须选择 - 你会使用XmlDocumentXmlWriter来创建和保存你的xml。

答案 2 :(得分:1)

如果你想要也可以使用LINQ,那就更容易了:

XDocument doc = new XDocument();
XNamespace ns = "";
doc.Add(new XElement(ns + "root"));
doc.Save(@"C:\DddXml.Xml");