Каждый раз, когда вы конвертируете документ XML в строку и начинаете манипулировать строкой, вам следует подумать: «Сам, я делаю что-то не так». Я не уверен из твоего описания, правда ли это, но держу пари, что это так.
Если пробел в XML, который вы извлекаете из базы данных, значителен, вы хотите сохранить его, когда разберете его в XElement
. Для этого используйте перегрузку XElement.Parse
, которая делает это, например ::10000
XElement testXmlNode = XElement.Parse(xmlFromDbWithLFChars, LoadOptions.PreserveWhitespace);
Когда вы это сделаете, парсер оставит символы пробела в проанализированных текстовых узлах XElement
документа именно там, где они были в исходной строке. XmlWriter
не связывается с существующими пробелами в текстовых узлах (хотя он добавит новые пробелы, если вы укажете отступ), так что это должно дать вам то, что вы хотите.