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