Создание Xml приводит к тому, что «Token StartElement в состоянии EndRootElement приведет к недопустимому документу XML» - PullRequest
0 голосов
/ 09 июля 2020

Следующий код должен создать файл xml, но я получаю сообщение об ошибке «Token StartElement в состоянии EndRootElement приведет к недопустимому XML документу».

XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;    
using (XmlWriter writer = XmlWriter.Create("startpositions.xml", settings))
{
    writer.WriteStartDocument();

    for (int i = 0; i < 20; i++)
    {
        writer.WriteStartElement("level_" + i.ToString());

        for (int s = 0; s < 5; s++)
        {
            writer.WriteElementString("pos" + s.ToString(), "empty");
        }

        writer.WriteEndElement();
    }

    writer.WriteEndDocument();
}

1 Ответ

0 голосов
/ 10 июля 2020

Причина ошибки в том, что вы пытаетесь создать несколько элементов вне элемента. Попробуйте это:

        XmlWriterSettings settings = new XmlWriterSettings();
        settings.Indent = true;
        settings.ConformanceLevel = ConformanceLevel.Auto;
        using (XmlWriter writer = XmlWriter.Create("startpositions.xml", settings))
        {
            writer.WriteStartDocument();

            writer.WriteStartElement("Levels");

            for (int i = 0; i < 20; i++)
            {
                writer.WriteStartElement("level_" + i.ToString());
                for (int s = 0; s < 5; s++)
                {
                    writer.WriteElementString("pos" + s.ToString(), "empty");
                }

                writer.WriteEndElement();
            }

            writer.WriteEndElement();

            writer.WriteEndDocument();
        }
...