代码之家  ›  专栏  ›  技术社区  ›  codymanix

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

  •  0
  • codymanix  · 技术社区  · 14 年前
            XmlDocument doc = new XmlDocument();
            doc.AppendChild(doc.CreateElement("Foo"));
            doc.DocumentElement.InnerXml = "Test";      
            StringBuilder result = new StringBuilder();
            doc.WriteContentTo(XmlWriter.Create(result));
    

    最后,结果是:

    <Foo>Test
    

    1 回复  |  直到 14 年前
        1
  •  6
  •   Jon Skeet    14 年前

    问题是您正在创建一个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);
        }
    }
    

    <?xml version="1.0" encoding="utf-16"?><Foo>Test</Foo>