Сохранение пробелов при сериализации (LINQ to XML)

В этой статье описывается, как управлять пробелами при сериализации XML-дерева.

Типичным сценарием является чтение отступа XML, создание дерева XML в памяти без каких-либо текстовых узлов пробелов (т. е. без сохранения пробелов), выполнение некоторых операций с XML, а затем сохранение XML с отступом. При сериализации XML с форматированием сохраняются только значимые пробелы XML-дерева. Это поведение по умолчанию для LINQ to XML.

Другой типичный сценарий заключается в чтении и изменении XML с уже существующими преднамеренными отступами. Эти отступы ни в коем случае изменять нельзя. Для этого в LINQ to XML следует сохранять пробелы при загрузке или анализе XML и отключении форматирования при сериализации XML.

Поведение пробелов методов сериализации деревьев XML

Следующие методы классов XElement и XDocument позволяют сериализовать XML-дерево. Можно сериализовать XML-дерево в файл, объект TextReader или объект XmlReader. Метод ToString позволяет сериализовать в строку.

Если метод не принимает SaveOptions в качестве аргумента, метод отформатируется (отступ) сериализованного XML. В этом случае все незначащие пробелы в XML-дереве удаляются.

Если метод берет объект SaveOptions в качестве аргумента, то можно указать, что этот метод не должен форматировать (расставлять отступы) сериализованный XML. В этом случае все незначащие пробелы в XML-дереве сохраняются.