xmlwriter записывает элементы в одну строку

Я попытался сохранить некоторые элементы из своего приложения в xml-файле, но когда начал разрабатывать его, используя этот код:

public static void WriteInFile(string savefilepath)
        {
            XmlWriter writer = XmlWriter.Create(savefilepath);
            WriteXMLFile(writer);

        }
private static void WriteXMLFile(XmlWriter writer) //Write and Create XML profile for specific type 
        {
            writer.WriteStartDocument();
            writer.WriteStartElement("cmap");
            writer.WriteAttributeString("xmlns", "dcterms",null, "http://purl.org/dc/terms/");
            writer.WriteElementString("xmlns", "http://cmap.ihmc.us/xml/cmap/");
           // writer.WriteAttributeString("xmlns","dc",null, "http://purl.org/dc/elements/1.1/");
            //writer.WriteAttributeString("xmlns", "vcard", null, "http://www.w3.org/2001/vcard-rdf/3.0#");
            writer.WriteEndElement();
            writer.WriteEndDocument();
            writer.Close();
        }

Я обнаружил, что вывод в блокноте находится в одной строке, например:

<?xml version="1.0" encoding="utf-8"?><cmap
xmlns:dcterms="http://purl.org/dc/terms/"><xmlns>http://cmap.ihmc.us/xml/cmap/</xmlns></cmap>

Я хочу, чтобы он выглядел как многострочный:

<?xml version="1.0" encoding="utf-8"?> <cmap
xmlns:dcterms="http://purl.org/dc/terms/"><xmlns>http://cmap.ihmc.us/xml/cmap/</xmlns>
</cmap>

person kartal    schedule 15.12.2011    source источник
comment
Результат, который вам нужен, точно такой же. Попробуйте загрузить его в XMLEditor и / или Visual Studio. Блокнот не известен своими параметрами форматирования.   -  person Security Hound    schedule 15.12.2011


Ответы (2)


Вы создали экземпляр XmlWriterSettings.

XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.IndentChars = "\t";
XmlWriter writer = XmlWriter.Create(savefilepath, settings);
person kv-prajapati    schedule 15.12.2011
comment
Для будущих читателей, столкнувшихся с этой проблемой, стоит упомянуть, что запись пробела остановит работу новой строки / отступа. MSDN для XmlWriterSettings.Indent - элементы имеют отступ до тех пор, пока элемент не содержит смешанного содержимого. После вызова метода WriteString или WriteWhitespace для записи содержимого смешанного элемента XmlWriter прекращает создание отступов. Отступ возобновляется после закрытия элемента смешанного содержимого. - person Kobunite; 02.05.2013

Вы должны использовать XmlWriterSettings - установите соответствующие параметры форматирования и передайте их при создании XmlWriter.

Подробнее об этом читайте здесь: http://msdn.microsoft.com/en-us/library/kbef2xz3.aspx

person zmbq    schedule 15.12.2011