Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
При загрузке и сохранении XmlDocument между сохраненным и исходным документами возможны следующие различия:
Если свойство PreserveWhitespace имеет значение
trueперед вызовом метода Save, то пробелы в документе при выводе сохраняются. Если свойство имеет значениеfalse, то XmlDocument автоматически вставляет отступы в выходные данные.Все пробелы между атрибутами сокращаются до одного символа пробела.
Пробелы между элементами изменяются. Значащие пробелы сохраняются, а незначащие пробелы не сохраняются. Но при сохранении документа по умолчанию используется режим XmlTextWriterотступов, чтобы аккуратно вывести данные на печать и сделать их более удобочитаемыми.
Символ кавычки вокруг значений атрибута по умолчанию заменяется символом двойной кавычки. Выбрать в качестве символа кавычки двойную кавычку или одинарную кавычку можно с помощью свойства QuoteChar класса XmlTextWriter.
По умолчанию числовые символьные сущности, например
{, раскрываются.Маркер порядка байт во входном документе не сохраняется. UCS-2 сохраняется как UTF-8, если явно не создана XML-декларация, указывающая другую кодировку.
Если требуется записать XmlDocument в файл или поток, то записываемые выходные данные не будут отличаться от содержимого документа. То есть, XmlDeclaration записывается только если в документе содержится XmlDeclaration, а кодировка, используемая при записи документа, совпадает с кодировкой, указанной в узле декларации.
Запись XmlDeclaration
XML-декларацию создают члены XmlDocument и XmlDeclaration из OuterXml, InnerXml, а также методы XmlDocument и Save из WriteContentTo.
Для свойств XmlDocument методов OuterXml, InnerXml, а также методов Save, WriteTo и WriteContentTo кодировка, записываемая в XML-декларацию, берется из узла XmlDeclaration. Если узла нет XmlDeclaration , XmlDeclaration не записывается. Если в XmlDeclaration узле отсутствует кодировка, кодировка не записывается в объявлении XML.
Методы XmlDocument.Save и XmlDocument.Save всегда записывают XmlDeclaration. Они получают кодировку из записывающего объекта, в который производится запись. То есть, кодовое значение модуля записи переопределяет кодировку в документе и в XmlDeclaration. Например, приведенный ниже код не записывает кодировку в XML-декларацию, находящуюся в выходном файле out.xml.
Dim doc As New XmlDocument()
Dim tw As XmlTextWriter = New XmlTextWriter("out.xml", Nothing)
doc.Load("text.xml")
doc.Save(tw)
XmlDocument doc = new XmlDocument();
XmlTextWriter tw = new XmlTextWriter("out.xml", null);
doc.Load("text.xml");
doc.Save(tw);
Для метода Save XML-декларация записывается с помощью метода WriteStartDocument класса XmlWriter. Поэтому при перезаписи метода WriteStartDocument изменяется способ записи начала документа.
XmlDeclaration Для членов OuterXml, WriteTo, и InnerXml, если свойство Encoding не задано, кодировка не записывается. В противном случае кодировка, записанная в объявлении XML, совпадает с кодировкой, найденной в свойстве Encoding.
Запись содержимого документа с помощью свойства OuterXml
Свойство OuterXml является расширением Microsoft для стандартов консорциума W3C, связанных с объектной моделью документа (DOM) XML. Свойство OuterXml позволяет получить разметку как полного XML-документа, так и единичного узла вместе с его дочерними узлами. Элемент OuterXml возвращает разметку, представляющую заданный узел и все его дочерние узлы.
В приведенном ниже образце кода показано сохранение документа целиком в виде строки.
Dim mydoc As New XmlDocument()
' Perform application needs here, like mydoc.Load("myfile");
' Now save the entire document to a string variable called "xml".
Dim xml As String = mydoc.OuterXml
XmlDocument mydoc = new XmlDocument();
// Perform application needs here, like mydoc.Load("myfile");
// Now save the entire document to a string variable called "xml".
string xml = mydoc.OuterXml;
В следующем образце кода показано, как сохранить только отдельный элемент документа.
' For the content of the Document Element only.
Dim xml As String = mydoc.DocumentElement.OuterXml
// For the content of the Document Element only.
string xml = mydoc.DocumentElement.OuterXml;
Однако если требуется содержимое дочерних узлов, можно использовать свойство InnerText.