При завантаженні і збереженні XmlDocument між збереженим і вихідним документами можливі наступні відмінності:
Якщо властивість PreserveWhitespace має значення true перед викликом методу Save. то прогалини в документі при виведенні зберігаються. Якщо властивість має значення false. то XmlDocument автоматично вставляє відступи в вихідні дані.
Всі прогалини між атрибутами скорочуються до одного символу пробілу.
Прогалини між елементами змінюються. Значущі прогалини зберігаються, а незначні - немає. Однак при збереженні документа за замовчуванням використовується режим XmlTextWriter Відступ. забезпечує акуратний зовнішній вигляд під час друку і зручність читання.
Символ лапки навколо значень атрибута за замовчуванням замінюється символом подвійної лапки. Вибрати в якості символу лапки прямі подвійні лапки або одинарні лапки можна за допомогою властивості QuoteChar класу XmlTextWriter.
За замовчуванням символи числових сутностей, наприклад # 123 ;. розширюються.
Значення позначки порядку байт у вхідному документі не зберігається. UCS-2 зберігається як UTF-8, якщо явно не створена XML-декларація, яка вказує інше кодування.
Для властивостей XmlDocument методів OuterXml. InnerXml. а також методів Save. WriteTo і WriteContentTo кодування, що записується в XML-декларацію, береться з вузла XmlDeclaration. Якщо вузол XmlDeclaration відсутня, то XmlDeclaration не записував. Якщо у вузлі XmlDeclaration немає кодування, то кодування не записує в XML-декларацію.
Методи XmlDocument. Save і XmlDocument. Save завжди записують XmlDeclaration. Вони отримують кодування з модуля, в який проводиться запис. Тобто, кодове значення модуля запису переопределяет кодування в документі і в XmlDeclaration. Наприклад, наведений нижче код не записує кодування в XML-декларацію, що знаходиться в вихідному файлі out.xml.
Для методу Save XML-декларація записується за допомогою методу WriteStartDocument класу XmlWriter. Тому при перезапису методу WriteStartDocument змінюється спосіб записи початку документа.
Якщо для елементів OuterXml. WriteTo і InnerXml класу XmlDeclaration не встановлено властивість Encoding. то кодування не записував. В іншому випадку кодування, записана в XML-декларацію, не відрізняється від кодування в властивості Encoding.
У наведеному нижче зразку коду показано збереження документа цілком у вигляді рядка.