C# 为XmlDocument设置InnerXml会导致缺少结束标记

C# 为XmlDocument设置InnerXml会导致缺少结束标记,c#,.net,xml,xmldocument,innerxml,C#,.net,Xml,Xmldocument,Innerxml,最后,结果是: XmlDocument doc = new XmlDocument(); doc.AppendChild(doc.CreateElement("Foo")); doc.DocumentElement.InnerXml = "Test"; StringBuilder result = new StringBuilder(); doc.WriteContentTo(XmlWriter.Crea

最后,结果是:

        XmlDocument doc = new XmlDocument();
        doc.AppendChild(doc.CreateElement("Foo"));
        doc.DocumentElement.InnerXml = "Test";      
        StringBuilder result = new StringBuilder();
        doc.WriteContentTo(XmlWriter.Create(result));
测试

这意味着缺少结束元素。这是为什么?我如何修复它?

问题是您正在创建一个XmlWriter,但没有处理它-因此它没有刷新。试试这个:

<Foo>Test
输出:

using System;
using System.Text;
using System.Xml;

class Test
{
    static void Main()
    {
        XmlDocument doc = new XmlDocument();
        doc.AppendChild(doc.CreateElement("Foo"));
        doc.DocumentElement.InnerXml = "Test";      
        StringBuilder result = new StringBuilder();
        using (XmlWriter writer = XmlWriter.Create(result))
        {
            doc.WriteContentTo(writer);
        }
        Console.WriteLine(result);
    }
}
测试

问题在于您正在创建一个XmlWriter,但没有处理它-因此它没有刷新。试试这个:

<Foo>Test
输出:

using System;
using System.Text;
using System.Xml;

class Test
{
    static void Main()
    {
        XmlDocument doc = new XmlDocument();
        doc.AppendChild(doc.CreateElement("Foo"));
        doc.DocumentElement.InnerXml = "Test";      
        StringBuilder result = new StringBuilder();
        using (XmlWriter writer = XmlWriter.Create(result))
        {
            doc.WriteContentTo(writer);
        }
        Console.WriteLine(result);
    }
}
测试