Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Класс объектной модели XML-документа (DOM) — это представление XML-документа в памяти. DOM позволяет программно считывать, управлять и изменять XML-документ. Класс XmlReader также считывает XML; однако он предоставляет доступ только для чтения без кэша, только для пересылки. Это означает, что нет возможностей для изменения значений атрибута или содержимого элемента или возможности вставки и удаления узлов с помощью XmlReader. Редактирование — это основная функция DOM. Это общий и структурированный способ представления XML-данных в памяти, хотя фактические XML-данные хранятся в линейной форме, когда они находятся в файле или поступают из другого объекта. Ниже приведены XML-данные.
Ввод
<?xml version="1.0"?>
<books>
<book>
<author>Carson</author>
<price format="dollar">31.95</price>
<pubdate>05/01/2001</pubdate>
</book>
<pubinfo>
<publisher>MSPress</publisher>
<state>WA</state>
</pubinfo>
</books>
На следующем рисунке показано, как структурирована память, когда эти XML-данные считываются в структуру DOM.
Структура XML-документа
В структуре XML-документа каждый круг в этом рисунке представляет узел, который называется объектом XmlNode . Объект XmlNode — это базовый объект в дереве DOM. Класс XmlDocument , расширяющий XmlNode, поддерживает методы выполнения операций в документе в целом (например, загрузка в память или сохранение XML в файл. Кроме того, XmlDocument предоставляет средства для просмотра и управления узлами во всем XML-документе. Как XmlNode, так и XmlDocument имеют улучшения производительности и удобства использования и имеют методы и свойства для:
Доступ и изменение узлов, относящихся к DOM, например узлов элементов, ссылочных узлов сущностей и т. д.
Извлеките все узлы, а также информацию, которую содержит узел, например текст в узле элемента.
Объекты узла имеют набор методов и свойств, а также основные и четко определенные характеристики. Ниже приведены некоторые из следующих характеристик:
Узлы имеют один родительский узел, который является узлом, находящимся непосредственно над ними. Единственными узлами, у которых нет родительского элемента, является корневой каталог документа, так как он является узлом верхнего уровня и содержит сам документ и фрагменты документов.
Большинство узлов могут иметь несколько дочерних узлов, которые являются узлами непосредственно под ними. Ниже приведен список типов узлов, которые могут иметь дочерние узлы.
Документ
DocumentFragment
Ссылка на сущность
Элемент
Атрибут
Узлы XmlDeclaration, Нотации, Entity, CDATASection, Text, Comment, ProcessingInstruction и DocumentType не имеют дочерних узлов.
Узлы, которые находятся на том же уровне, представлены на схеме узлами книги и pubinfo , являются братьями и сестрами.
Одна из характеристик DOM заключается в том, как он обрабатывает атрибуты. Атрибуты не являются узлами, которые являются частью родительских, дочерних и параллельных взаимоотношений. Атрибуты считаются свойством узла элемента и состоят из имени и пары значений. Например, если у вас есть XML-данные, состоящие из format="dollar
", связанных с элементом price
, слово format
— это имя, а значение format
атрибута — dollar
. Чтобы получить format="dollar"
атрибут узла price , вызовите метод GetAttribute , когда курсор находится на price
узле элемента. Дополнительные сведения см. в разделе "Доступ к атрибутам" в DOM.
Так как XML считывается в память, создаются узлы. Однако не все узлы имеют одинаковый тип. Элемент в XML имеет разные правила и синтаксис, отличные от инструкции обработки. Таким образом, при чтении различных данных тип узла назначается каждому узлу. Этот тип узла определяет характеристики и функциональные возможности узла.
Дополнительные сведения о типах узлов, созданных в памяти, см. в разделе "Типы XML-узлов". Дополнительные сведения о объектах, созданных в дереве узлов, см. в разделе "Сопоставление иерархии объектов" с XML-данными.
Корпорация Майкрософт расширила API- интерфейсы, доступные в консорциуме W3C DOM уровня 1 и уровня 2, чтобы упростить работу с XML-документом. Несмотря на полную поддержку стандартов W3C, дополнительные классы, методы и свойства добавляют функциональные возможности, помимо того, что можно сделать с помощью W3C XML DOM. Новые классы позволяют получать доступ к реляционным данным, предоставляя методы синхронизации с ADO.NET данными, одновременно предоставляя данные как XML. Дополнительные сведения см. в разделе Синхронизация набора данных с помощью XmlDataDocument.
DOM является наиболее полезным для чтения XML-данных в память для изменения структуры, добавления или удаления узлов или изменения данных, удерживаемых узлом, как в тексте, содержаемом элементом. Однако другие классы доступны быстрее, чем DOM в других сценариях. Для быстрого, не кэшированного, прямого доступа к XML используйте XmlReader и XmlWriter. Если вам нужен случайный доступ с помощью модели курсора и XPath, используйте класс XPathNavigator .