Создадим новый файл booknew.xml
и добавим новую книгу. Объект XmlTextWriter
заменит существующий файл. Вставку нового элемента или узла в существующий документ рассмотрим позже. Экземпляр объекта XmlTextWriter
создается с помощью объекта FileStream
в качестве параметра. Можно также передать строку с именем файла и путем доступа или объект на основе TextWriter
. При задании свойства Indenting
узлы-потомки будут автоматически делать отступ от предка. Метод WriteStartDocument
помещает объявление документа. Начинаем запись данных. Сначала идет элемент book
. Затем добавляем атрибуты genre
, publicationdate
и ISBN
. После чего записываем элементы title
, author
, и price. Отметим, что элемент author
имеет элемент-потомок name
.
После нажатия на кнопку будет создан следующий файл booknew.xml
:
Так же как в документе XML, здесь имеются начальный метод и конечный метод (WriteStartElement
и WriteEndElement
). Вложенность контролируется отслеживанием начала и окончания записи элементов и атрибутов. Это можно видеть при добавлении элемента потомка name
к элементу authors
. Отметим, как организуются вызовы методов WriteStartElement
и WriteEndElement
и как это связывается с выведенным документом XML.
В дополнение к WriteElementString
и WriteAtributeString
имеется несколько других специализированных методов записи. Метод WriteCDate
будет выводить раздел CDate ()
, взяв текст для записи из параметра. WriteComment записывает комментарий в подходящем формате XML. WriteChars записывает содержимое символьного буфера. Это работает аналогично методу ReadChars
, который был рассмотрен ранее. Оба они используют один и тот же тип параметров. Методу WriteChar
нужен буфер (массив символов), начальная позиция для записи (целое значение) и число символов для записи (целое значение).
Чтение и запись XML с помощью классов, основанных на XMLReader
и XMLWriter, осуществляются очень просто. Далее мы рассмотрим реализацию DOM пространства имен System.Xml
. Это классы на основе XmlDocument
и XmlNode
.
Объектная модель документа в .NET
Реализация объектной модели документа (DOM, Document Object Model) в .NET поддерживает спецификации W3C DOM Level 1 и Core DOM Level 2. DOM реализуется с помощью класса XmlNode
. XmlNode
является абстрактным классом, который представляет узел документа XML. XmlNodeList
является упорядоченным списком узлов. Это живой список узлов, и любые изменения в любом узле немедленно отражаются в списке. XmlNodeList
поддерживает индексный доступ или итеративный доступ. Эти два класса составляют основу реализации DOM на платформе .NET. Вот список классов, которые основываются на XmlNode
.