Моя цель — вывести измененный файл XML и сохранить специальный отступ, который присутствовал в исходном файле. Цель состоит в том, чтобы полученный файл по-прежнему выглядел как оригинал, что упрощает их сравнение и объединение с помощью системы управления версиями.
Моя программа будет читать файл XML и добавлять или изменять один конкретный атрибут.
Вот форматирование, которое я пытаюсь достичь/сохранить:
<Base Import="..\commom\style.xml">
<Item Width="480"
Height="500"
VAlign="Center"
Style="level1header">
(...)
В этом случае я просто хочу выровнять все атрибуты после первого с первым.
XmlWriterSettings
предоставляет параметры форматирования, но они не приведут к желаемому результату.
settings.Indent = true;
settings.NewLineOnAttributes = true;
Эти настройки поместят первый атрибут на новую строку вместо того, чтобы оставить его на той же строке, что и узел, и выровняют атрибуты с узлом.
Вот вызов Load
, который запрашивает сохранение пробелов:
MyXml = XDocument.Load(filepath, LoadOptions.PreserveWhitespace);
Но, похоже, это не будет делать то, что я ожидал.
Я попытался предоставить собственный класс, производный от XmlWriter
для вызова XDocument.Save
, но мне не удалось правильно вставить пробел, не столкнувшись с InvalidOperationException
. Кроме того, это решение кажется излишним для небольшого дополнения, которое я ищу.
Для справки, это мой вызов сохранения, не использующий мой собственный модуль записи xml (который все равно не работает)
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.NewLineOnAttributes = true;
settings.OmitXmlDeclaration = true;
using (XmlWriter writer = XmlWriter.Create(filepath + "_auto", settings))
{
MyXml.Save(writer);
}