C# для профессионалов. Том II | страница 13



к элементу >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.

Имя классаОписание
>XmlLinkedNodeРасширяет >XmlNode. Возвращает узел непосредственно перед или после текущего узла. Добавляет свойства >NextSibling и >PreviousSibling в >XmlNode.
>XmlDocumentРасширяет >XmlNode. Представляет весь документ. Реализует спецификации DOM Level 1 и Level 2.
>XmlAttributeРасширяет >XmlNode. Объект атрибута объекта >XmlElement.
>XmlCDataSectionРасширяет >XmlCharacterData. Объект, который представляет раздел документа >CData.
>XmlCharacterDataАбстрактный класс, который предоставляет методы манипуляции с текстом для других классов. Расширяет >XmlLinkedNode.
>XmlCommentРасширяет >XmlCharacterData. Представляет объект комментария XML.
>XmlDeclarationРасширяет >XmlLinkedNode. Представляет узел объявления (>)
>XmlDocumentFragmentРасширяет >XmlNode. Представляет фрагмент дерева документа.
>XmlDocumentTypeРасширяет >XmlLinkedNode