В разделе 2.1. были рассмотрены объекты MSXML и их методы и свойства для загрузки, анализа выполнения загрузки и сохранения XML документа. Когда XML документ успешно загружен, в памяти строится дерево узлов, которое можно программным способом обработать: просмотреть все или часть дерева, выделить поддерево, найти, добавить, удалить или модифицировать узлы.
Примечание. Многие действия, связанные с поиском, выделением узла или группы узлов более эффективно выполнять, используя возможности спецификации XPath (XML Path Language).
Возможные типы узлов DOM, их идентификаторы, имена, значения и атрибуты представлены в таблице 1.
табл. 1
Тип узла |
ID узла |
имя узла |
значение узла |
атрибуты |
|
зна-че-ние |
константа |
||||
Element |
1 |
ELEMENT _NODE |
имя тега |
null |
NameNodeMap |
Attr |
2 |
ATTRIBUTE _NODE |
имя атрибута |
значение атрибута |
null |
Text |
3 |
TEXT _NODE |
#text |
содержание текстового узла |
null |
CDATASection |
4 |
CDATA _SECTION _NODE |
#cdata_section |
содержание участка CDATA |
null |
EntityReference |
5 |
ENTITY _REFERENCE _NODE |
имя объекта на который ссылается |
null |
null |
Entuty |
6 |
ENTITY _NODE |
имя объекта |
null |
null |
ProcessingInstruction |
7 |
PROCESSING _INSTRUCTION _NODE |
имя приложения, которому адресована команда |
все содержание за
исключением имени приложения |
null |
Comment |
8 |
COMMENT _NODE |
#comment |
содержание комментария |
null |
Document |
9 |
DOCUMENT _NODE |
#document |
null |
null |
DocumentType |
10 |
DOCUMENT _TYPE_NODE |
имя документа |
null |
null |
DocumentFragment |
11 |
DOCUMENT _FRAGMENT _NODE |
#document _fragment |
null |
null |
Notation |
12 |
NOTATION _NODE |
имя обозначения |
null |
null |
С точки зрения программиста в DOM каждый тип узла представляется соответствующим интерфейсом, который реализован в MSXML объектом с набором методов и свойств. В таблице 2 представлены возможные типы узлов, соответствующие им объекты MSXML и допустимые иерархические взаимосвязи при построении дерева XML документа.
Тип узла |
Объект MSXML |
Может быть дочерним от узлов |
Может иметь дочерние узлы |
Document |
IXMLDOMDocument |
|
Element (максимум 1),
ProcessingInstruction, Comment,
DocumentType |
Element |
IXMLDOMElement |
Document, DocumentFragment, EntityReference, Element |
Element, Text, Comment, ProcessingInstruction, CDATASection, EntityReference |
Attr |
IXMLDOMAttribute |
|
Text, EntityReference |
Text |
IXMLDOMText |
Attribute, DocumentFragment, Element, EntityReference |
|
CDATASection |
IXMLDOMCDATASection |
DocumentFragment, EntityReference, Element |
|
EntityReference |
IXMLDOMEntityReference |
Attribute, DocumentFragment, Element, EntityReference |
Element, ProcessingInstruction, Comment, Text, CDATASection,
EntityReference |
Entity |
IXMLDOMEntity |
DocumentType |
Text, EntityReference |
ProcessingInstuction |
IXMLDOMProcessingInstruction |
Document, DocumentFragment, Element,
EntityReference |
|
Comment |
IXMLDOMComment |
Document, DocumentFragment, Element,
EntityReference |
|
DocumentType |
IXMLDOMDocumentType |
Document |
Notation, Entity |
DocumentFragment |
IXMLDOMDocumentFragment |
|
Element, ProcessingInstruction, Comment, Text, CDATASection, EntityReference |
Notation |
IXMLDOMNotation |
DocumentType |
|
Кроме представленных в таблице 2 объектов, представляющих соответствующие узлы, DOM имеет еще два базовых интерфейса NodeList и NamedNodeMap.
В MSXML интерфейс NodeList реализован посредством объекта IXMLDOMNodeList, а интерфейс NamedNodeMap посредством объекта IXMLDOMNamedNodeMap.