为XmlDocument设置InnerXml会导​​致缺少End-Tag

cod*_*nix 0 .net c# xml innerxml xmldocument

        XmlDocument doc = new XmlDocument();
        doc.AppendChild(doc.CreateElement("Foo"));
        doc.DocumentElement.InnerXml = "Test";      
        StringBuilder result = new StringBuilder();
        doc.WriteContentTo(XmlWriter.Create(result));
Run Code Online (Sandbox Code Playgroud)

最后,结果是:

<Foo>Test
Run Code Online (Sandbox Code Playgroud)

这意味着缺少最终元素.为什么这样,我该如何解决?

Jon*_*eet 6

问题是你正在创建一个XmlWriter,但不会丢弃它 - 所以它不会刷新.试试这个:

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

<?xml version="1.0" encoding="utf-16"?><Foo>Test</Foo>
Run Code Online (Sandbox Code Playgroud)