Мне пришлось записать данные базы данных в файл XML и прочитать их обратно из файла XML, используя LINQ to XML. Некоторые поля в записи сами были строками xml с символами \ r. Они должны были остаться нетронутыми. Я потратил несколько дней, пытаясь найти что-то, что бы работало, но, похоже, Microsoft задумал конвертировать \ r в \ n.
У меня работает следующее решение:
Чтобы записать загруженный XDocument в файл XML, сохраняя \ r без изменений, где xDoc - это XDocument, а filePath - строка:
XmlWriterSettings xmlWriterSettings = new XmlWriterSettings
{ NewLineHandling = NewLineHandling.None, Indent = true };
using (XmlWriter xmlWriter = XmlWriter.Create(filePath, xmlWriterSettings))
{
xDoc.Save(xmlWriter);
xmlWriter.Flush();
}
Чтобы прочитать XML-файл в XElement, сохраняя \ r неповрежденным:
using (XmlTextReader xmlTextReader = new XmlTextReader(filePath)
{ WhitespaceHandling = WhitespaceHandling.Significant })
{
xmlTextReader.MoveToContent();
xDatabaseElement = XElement.Load(xmlTextReader);
}