Запись XMLDocument в файл с определенным символом новой строки (c#)

У меня есть XMLDocument, в котором я читал из файла. Файл является Unicode и имеет символ новой строки '\n'. Когда я записываю XMLDocument обратно, он имеет символы новой строки '\r\n'.

Вот код, довольно простой:

XmlTextWriter writer = new XmlTextWriter(indexFile + ".tmp", System.Text.UnicodeEncoding.Unicode);
writer.Formatting = Formatting.Indented;

doc.WriteTo(writer);
writer.Close();

XmlWriterSettings имеет свойство, NewLineChars, но я не могу указать параметр настроек на 'устройстве записи', это только для чтения.

Я могу создать XmlWriter с указанным свойством XmlWriterSettings, но XmlWriter не имеет свойства форматирования, приводящего к файлу без разрывов строки вообще.

Так, короче говоря, я должен записать XML-файл Unicode с символом новой строки '\n' и Форматирование. С отступом. Мысли?

7
задан jaws 23 April 2010 в 16:56
поделиться

2 ответа

Думаю, вы близки. Вам нужно создать писатель из объекта настроек:

(снято со страницы XmlWriterSettings MSDN )

XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.OmitXmlDeclaration = true;
settings.NewLineOnAttributes = true;

writer = XmlWriter.Create(Console.Out, settings);

writer.WriteStartElement("order");
writer.WriteAttributeString("orderID", "367A54");
writer.WriteAttributeString("date", "2001-05-03");
writer.WriteElementString("price", "19.95");
writer.WriteEndElement();

writer.Flush();
5
ответ дан 7 December 2019 в 01:18
поделиться

Используйте XmlWriter.Create (), чтобы создать средство записи и указать формат. Это сработало хорошо:

using System;
using System.Xml;

class Program {
    static void Main(string[] args) {
        XmlWriterSettings settings = new XmlWriterSettings();
        settings.NewLineChars = "\n";
        settings.Indent = true;
        XmlWriter writer = XmlWriter.Create(@"c:\temp\test.xml", settings);
        XmlDocument doc = new XmlDocument();
        doc.InnerXml = "<root><element>value</element></root>";
        doc.WriteTo(writer);
        writer.Close();
    }
}
5
ответ дан 7 December 2019 в 01:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: