Настройка InnerxML для XMLDocument вызывает отсутствие конечного тега

StackOverflow https://stackoverflow.com/questions/3760964

Вопрос

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

В конце результат есть:

<Foo>Test

Это означает, что конечный элемент отсутствует. Почему это и как я могу это исправить?

Это было полезно?

Решение

Проблема в том, что вы создаете 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>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top