Збереження і запис документа

При завантаженні і збереженні 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.

У наведеному нижче зразку коду показано збереження документа цілком у вигляді рядка.

Схожі статті