Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 缺少根元素-使用XmlTextWriter创建Xmldocument_C#_.net_Xml - Fatal编程技术网

C# 缺少根元素-使用XmlTextWriter创建Xmldocument

C# 缺少根元素-使用XmlTextWriter创建Xmldocument,c#,.net,xml,C#,.net,Xml,我有以下代码,在doc.Load()期间显示“根元素丢失” 我想不出这个问题。有什么见解吗?您还没有刷新xmlWriter,因此它可能还没有写出任何东西。而且,您永远不会完成根元素,因此即使它已写出 <Root> (请注意,我不是在调用WriteEndDocument——这似乎只有在您仍然有打开的元素或属性时才有必要。)正如@Skeet所说,另外,您似乎没有关闭元素: xmlWriter.WriteEndElement(); 我看到你开始写文档,但我没有看到你写了它或者。。。(至

我有以下代码,在
doc.Load()
期间显示“根元素丢失”


我想不出这个问题。有什么见解吗?

您还没有刷新
xmlWriter
,因此它可能还没有写出任何东西。而且,您永远不会完成根元素,因此即使它已写出

<Root>

(请注意,我不是在调用
WriteEndDocument
——这似乎只有在您仍然有打开的元素或属性时才有必要。)

正如@Skeet所说,另外,您似乎没有关闭元素:

xmlWriter.WriteEndElement();

我看到你开始写文档,但我没有看到你写了它或者。。。(至少在您使用它之前是这样)

(一些无关的东西:虽然这不是严格必要的,但是您可以使用
内存流
XmlTextWriter
对象的块将代码封装在
中——它们都是
IDisposable
)我在第二句话中谈到了这一点:)确实,您做到了,但在隐形模式下——这是我能理解为什么我会错过它的唯一原因规程问题:is.Close()通常不比.Flush()更正确?@annalata:我认为这会关闭流,我们不想在这里这样做。不过,通常我会处理掉作者。
using System;
using System.IO;
using System.Text;
using System.Xml;

class Test
{
    static void Main(string[] args)
    {
        using (MemoryStream stream = new MemoryStream())
        {
            XmlTextWriter xmlWriter = new XmlTextWriter(stream, Encoding.UTF8);
            xmlWriter.Formatting = System.Xml.Formatting.Indented;
            xmlWriter.WriteStartDocument();
            xmlWriter.WriteStartElement("Root");
            xmlWriter.WriteEndElement();
            xmlWriter.Flush();

            XmlDocument doc = new XmlDocument();
            stream.Position = 0;
            doc.Load(stream);
            doc.Save(Console.Out);
        }
    }
}
xmlWriter.WriteEndElement();