Запись XMLDocument в файл с определенным символом новой строки (c#)
У меня есть XMLDocument, который я прочитал из файла. Файл является Unicode и имеет символ новой строки "n". Когда я пишу XmlDocument обратно, он имеет символы новой строки "rn".
вот код, довольно простой:
XmlTextWriter writer = new XmlTextWriter(indexFile + ".tmp", System.Text.UnicodeEncoding.Unicode);
writer.Formatting = Formatting.Indented;
doc.WriteTo(writer);
writer.Close();
XmlWriterSettings имеет свойство NewLineChars, но я не могу указать параметр настроек на "writer", он доступен только для чтения.
Я могу создать XmlWriter с указанным свойством XmlWriterSettings, но XmlWriter не имеет свойства форматирования, в результате чего файл вообще не имеет linebreaks.
короче говоря, мне нужно написать Xml-файл Unicode с символом новой строки "n " и форматированием.Изрезанный. Мысли?
2 ответов
Я думаю, вы близки. Вам нужно создать writer из объекта настроек:
(снят с 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();
Используйте 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();
}
}