В DOM, все в документе XML является узлом.
DOM Nodes
Согласно DOM, все в документе XML является node .
DOM говорит:
- Весь документ является узлом документа
- Каждый XML-элемент является узлом элемента
- Текст в элементах XML являются текстовыми узлами
- Каждый атрибут является узлом атрибута
- Комментарии являются узлы комментариев
DOM Пример
Посмотрите на файл имеет следующий XML ( books.xml ):
<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book category="cooking">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="children">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="web">
<title lang="en">XQuery Kick Start</title>
<author>James McGovern</author>
<author>Per Bothner</author>
<author>Kurt Cagle</author>
<author>James Linn</author>
<author>Vaidyanathan Nagarajan</author>
<year>2003</year>
<price>49.99</price>
</book>
<book category="web" cover="paperback">
<title lang="en">Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
</bookstore>
Корневой узел в приведенном выше XML называется <bookstore> . Все остальные узлы в документе содержатся внутри <bookstore> .
Корневой узел <bookstore> содержит четыре <book> узлы.
Первая <book> узел содержит четыре узла: <title>, <author>, <year> и <price> , который содержит один текстовый узел каждый, "Everyday Italian", "Giada De Laurentiis" , "2005" , и "30.00" .
Текст всегда хранится в текстовых узлов
Типичная ошибка при обработке DOM является ожидать узел элемента, чтобы содержать текст.
Тем не менее, текст узла элемента хранится в текстовом узле.
В этом примере: <year>2005</year> , элемент узла <year> , имеет текстовый узел со значением "2005" .
"2005" является not величина <year> элемента!
XML DOM Node Tree
XML DOM рассматривает документ XML в виде древовидной структуры. Структура дерева называется node-tree.
Все узлы могут быть доступны через дерево. Их содержание может быть изменен или удален, и новые элементы могут быть созданы.
Узел дерева показывает множество узлов и связей между ними. Дерево начинается с корневого узла и разветвляется к текстовым узлам на самом низком уровне дерева:
Изображение выше представляет собой XML - файл Books.xml .
Узел родители, дети, братья и сестры
Узлы в дереве узлов имеют иерархические отношения друг к другу.
Термины родитель, ребенок, и родственный используются для описания отношений. Родительские узлы имеют детей. Дети на том же уровне , называются братьями и сестрами (brothers or sisters) .
- В дереве узлов, верхний узел называется корневым
- Каждый узел, за исключением корня, имеет ровно один родительский узел
- Узел может иметь любое количество детей
- Лист представляет собой узел без детей
- Братья и сестры являются узлами с тем же родителем
На следующем рисунке показана часть дерева узлов и отношения между узлами:
Поскольку данные XML структурированы в виде дерева, он может быть пройден, не зная точную структуру дерева и не зная тип данных, содержащихся в.
Вы узнаете больше о прохождении дерево узлов в следующей главе данного руководства.
Первый ребенок - последний ребенок
Посмотрите на следующий фрагмент XML:
<bookstore>
<book category="cooking">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
</bookstore>
В приведенном выше XML, то <title> элемент является первым дочерним элементом <book> элемента, а <price> элемент является последним потомком <book> элемента.
Кроме того, <book> элемент является родительским узлом <title>, <author>, <year> , and <price> elements. <title>, <author>, <year> , and <price> elements.