Узлы XML DOM

Согласно XML DOM, все содержимое документа XML являетсяУзел

  • Вся документация является документом узла
  • Каждый элемент XML является элементом узла
  • Текст в элементе XML является текстовым узлом
  • Каждый атрибут является атрибутом узла
  • Комментарии являются комментарием узла

Пример DOM

Пожалуйста, посмотрите以下的 XML файл (books.xml):

<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book category="美食">
  <title lang="zh">雅舍谈吃</title>
  <author>梁实秋</author>
  <press>江苏文艺出版社</press>
  <year>2013</year>
  <price>35</price>
  <ISBN>9787539962771</ISBN>
</book>
<book category="children">
  <title lang="zh">Великолепный папа-лис</title>
  <author>Рольф Дал</author>
  <translator>Дай Вей</translator>
  <press>Томorrow Publishing House</press>
  <year>2009</year>
  <price>10</price>
  <ISBN>9787533259563</ISBN>
</book>
<book category="литература">
  <title lang="zh">Преобразование знакомого в незнакомое</title>
  <author>Зигмунд Бауман</author>
  <author>Петер Хаффнер</author>
  <translator>Ван Личжоу</translator>
  <press>Нanjингский университетский издательский дом</press>
  <year>2023</year>
  <price>68</price>
  <ISBN>9787305269387</ISBN>
</book>
<book category="наука">
  <title lang="zh">Ты хочешь летать, как птица?</title>
  <author>Ричард Докинз</author>
  <author>Яна Ренцова</author>
  <translator>Гао Тяньyu</translator>
  <press>Хунаньская научная и техническая издательская компания</press>
  <year>2023</year>
  <price>88</price>
  <ISBN>9787571019075</ISBN>
</book>
<book category="политика" cover="твердый переплет">
  <title lang="zh">О демократии в США</title>
  <author>Токвиль</author>
  <translator>Дун Гуолиан</translator>
  <press>Бизнес-издательство</press>
  <year>1989</year>
  <price>60</price>
  <ISBN>9787100124553</ISBN>
</book>
</bookstore>

В указанном выше XML корневым узлом является <bookstore>.

Все другие узлы документа включены в <bookstore>.

Корневой узел <bookstore> имеет 5 узлов <book>.

Первый <book> узел содержит 6 подузлов: <title>, <author>, <press>, <year>, <price> и <ISBN>.

Каждый подузел содержит текстовый узел:

  • "雅舍谈吃"
  • "梁实秋"
  • "江苏文艺出版社"
  • "2012"
  • "48.00"
  • "9787100011105"

Текст всегда хранится в текстовом узле

Одна из распространенных ошибок обработки DOM заключается в том, что элемент содержит текст.

Однако текст элемента хранится в текстовом узле.

В этом примере:<year>2013</year>, узел элемента <year> содержит текстовый узел с значением "2012".

"2012" Нет ! Значение элемента <year>

Дерево узлов XML DOM

XML DOM рассматривает документ XML как структуру дерева. Эта структура дерева называетсяДерево узлов.

Все узлы можно получить через это дерево. Их содержимое можно изменить или удалить, а также можно создать новые элементы.

Это дерево узлов показывает набор узлов и их взаимосвязи. Это дерево начинается с корневого узла и затем растет ветвями к текстовым узлам на нижних уровнях дерева:

Дерево узлов DOM

На следующем рисунке показан файл XML books.xml.

Родительские, подузловые и братские узлы

Узлы в дереве узлов имеют иерархические отношения друг с другом.

Термины «родитель», «детьми» и «братские узлы» используются для описания этой связи. Родительский узел имеет подузлы. Подузлы, находящиеся на одном уровне, называются узлами одного уровня или братскими узлами (братья или сестры).

  • В дереве узлов верхний узел называется корнем
  • За исключением корневого узла, каждый узел имеет только одного родителя
  • Узел может иметь любое количество подузлов
  • Листовой узел - это узел без подузлов
  • Братские узлы - это узлы, имеющие одного общего родителя

На следующем рисунке показана часть дерева узлов и их взаимосвязи:

Дерево узлов DOM

Поскольку данные XML структурированы в виде дерева, их можно обрабатывать, не зная точной структуры дерева и типов данных, содержащихся в нем.

Вы узнаете больше о навигации по дереву узлов в более поздних главах этого руководства.

Комментарии:Родительский узел: Parent Node, подузел: Children Node, узел одного уровня: Sibling Node.

Первый подузел - последний подузел

Пожалуйста, посмотрите следующий фрагмент XML:

<bookstore>
  <book category="美食">
    <title lang="zh">雅舍谈吃</title>
    <author>梁实秋</author>
	<press>江苏文艺出版社</press>
    <year>2013</year>
    <price>35</price>
	<ISBN>9787100011105</ISBN>
  </book>
</bookstore>

В приведенном выше XML, элемент <title> является первым подузлом элемента <book>, а элемент <ISBN> является последним подузлом элемента <book>.

Кроме того, элемент <book> является родителем элементов <title>, <author>, <year>, <press>, <price> и <ISBN>.