lmoelleb
Когда вы указываете LoadOptions.PreserveWhiteSpace
во время загрузки не будет добавлено или удалено никаких пробелов, поэтому я не думаю, что проблема именно в этом.
Я думаю, что ваша проблема заключается в экономии.
Взгляните на это Перечисление SaveOptions (System.Xml.Linq) | Microsoft Docs[^].
Это необязательный параметр ВКЛ. XDocument.Save
.
В частности вам понадобится DisableFormatting
флаг для обеспечения того, чтобы писатель не вставлял незначительные пробелы.
Но во всех случаях вам нужно научиться отлаживать. Не пытайтесь просто посмотреть на вход и выход, а затем случайным образом настроить какой-то код. Один шаг над соответствующим кодом в отладчике и наблюдайте за ним.
Присутствуют ли дополнительные новые строки после загрузки? Если да, то вам нужно посмотреть, как правильно его загрузить.
Присутствуют ли они после удаления жирных тегов и т. д.? Если это так, вам нужно заглянуть в код, выполняющий замену, и попытаться найти решение.
Если они отсутствуют в элементе, когда вы вызываете save, то он добавляется save, и вам нужно посмотреть на флаги, которые вы передаете для сохранения.
Будьте осторожны с отладчиком в Visual Studio, он пытается "помочь" вам, иногда отображая новые строки в виде пробелов. Используйте "текстовый визуализатор", доступный, щелкнув небольшое выпадающее меню, показанное с увеличительным стеклом рядом со значением.
Скорее всего, использование этого флага-правильный подход в вашем случае. Но если вы несете ответственность за генерацию XML-файлов и хотите свести к минимуму другие инструменты, делающие подобные ошибки при обработке ваших файлов "вниз по линии", вам следует заглянуть в xml:space
атрибут. Он говорит любому стандартному совместимому XML-писателю/загруженному, чтобы сохранить значительные пробелы как при загрузке, так и при сохранении без каких-либо дополнительных параметров. Укажите его в корневом элементе, если вы ленивы (и хотите сделать его менее вероятным, чтобы вы его где-то забыли), или в отдельных элементах, если вы хотите сохранить его "красивым", где он все еще может форматироваться как можно больше.