Frage

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

Am Ende ergibt sich:

<Foo>Test

, die das Endglied bedeutet fehlt. Warum ist das und wie kann ich es beheben?

War es hilfreich?

Lösung

Das Problem ist, dass Sie einen XmlWriter erstellen, aber die Entsorgung von nicht - so dies nicht der Spülung. Versuchen Sie folgendes:

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

Ausgabe:

<?xml version="1.0" encoding="utf-16"?><Foo>Test</Foo>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top