В чем разница между элементом и узлом в XML? - PullRequest
348 голосов
/ 25 сентября 2008

Я работаю на Java с XML и мне интересно; В чем разница между элементом и узлом?

Ответы [ 13 ]

245 голосов
/ 25 сентября 2008

Объект Node является основным типом данных для всего DOM.

Узлом может быть узел элемента, узел атрибута, текстовый узел или любой другой тип узла, описанный в главе «Типы узлов».

Элемент XML - это все от (включая) начальный тег элемента до (включая) конечный тег элемента.

66 голосов
/ 18 ноября 2008

Различные спецификации W3C определяют разные наборы типов "Node".

Таким образом, спецификация DOM определяет следующие типы узлов:

  • Document - Element (максимум один) ProcessingInstruction, Comment, DocumentType
  • DocumentFragment - Element, ProcessingInstruction, Comment, Text, CDATASection, EntityReference
  • DocumentType - нет детей
  • EntityReference - Element, ProcessingInstruction, Comment, Text, CDATASection, EntityReference
  • Element - Element, Text, Comment, ProcessingInstruction, CDATASection, EntityReference
  • Attr - Text, EntityReference
  • ProcessingInstruction -- нет детей
  • Comment - нет дети
  • Text - нет дети
  • CDATASection - нет детей
  • Entity - Element, ProcessingInstruction, Comment, Text, CDATASection, EntityReference
  • Notation - нет дети

XML Infoset (используется XPath) имеет меньший набор узлов:

Информационный элемент документа Элементы информации об элементах Элементы информации об атрибутах Обработка информационных элементов инструкции Элементы справочной информации о нераскрытой сущности Информационные элементы персонажей Элементы информации о комментариях Информационный элемент декларации типа документа Необработанные информационные объекты Обозначения информационных обозначений Информационные объекты пространства имен

XPath имеет следующие типы узлов:

  • корневые узлы
  • узлы элементов
  • текстовые узлы
  • атрибуты узлов
  • узлы пространства имен
  • узлы инструкций по обработке
  • узлы комментариев

Ответ на ваш вопрос" В чем разница между элементом и узлом ":

An element is a type of node. Many other types of nodes exist and serve different purposes.

27 голосов
/ 25 сентября 2008

Узел является частью дерева DOM, Элемент - это особый тип Узла

например. <foo> This is Text </foo>

У вас есть элемент foo (который также является узлом, так как элемент наследуется от узла) и текстовый узел 'Это текст', который является потомком элемента / узла foo

26 голосов
/ 25 сентября 2008

Узлом может быть множество разных типов вещей: некоторый текст, комментарий, элемент, объект и т. Д. Элемент - это особый вид узла.

15 голосов
/ 25 сентября 2008

Как описано в различных спецификациях XML , element - это то, что состоит из начального тега и конечного тега, а также содержимого между ними или, альтернативно, пустого тега элемента (который не имеет содержимое или конечный тег). Другими словами, это все элементы:

<foo> stuff </foo>
<foo bar="baz"></foo>
<foo baz="qux" />

Хотя вы слышите, что «узел» используется примерно с таким же значением, он не имеет точного определения для спецификаций XML. Обычно он используется для ссылки на узлы таких вещей, как DOM, которые могут быть тесно связаны с XML или использовать XML для их представления.

11 голосов
/ 03 апреля 2013

XML-документ состоит из вложенных элементов. Элемент начинается с открывающего тега и заканчивается на закрывающего тега . Вы, наверное, видели <body> и </body> в html. Все, что находится между открывающим и закрывающим тегами, является элементом content . Если элемент определен самозакрывающимся тегом (например, <br/>), то его содержимое пусто.

Открывающие теги могут также указывать атрибуты , например. <p class="rant">. В этом примере атрибут name равен 'class', а его value 'rant'.

В языке XML нет такой вещи, как «узел» . Прочтите спецификацию , слово не встречается.

Некоторые люди неофициально используют слово «узел» для обозначения элемента, что сбивает с толку, потому что некоторые анализаторы также придают слову техническое значение (идентифицируя «текстовые узлы» и «узлы элементов»). Точное значение зависит от синтаксического анализатора, поэтому слово не определено, если вы не укажете, какой синтаксический анализатор вы используете. Если вы имеете в виду элемент, скажите «элемент» .

9 голосов
/ 25 сентября 2008

Узел является базовым классом как для элементов, так и для атрибутов (и в основном для всех других представлений XML).

7 голосов
/ 25 сентября 2008

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

Документ также имеет дочерние узлы, НО
без атрибутов, без текста, ровно один дочерний элемент.

2 голосов
/ 10 марта 2015

Узел определен как:

наименьшая единица допустимой, полной структуры в документе.

или как:

Объект в древовидном представлении, который служит контейнером для хранения связанных объектов.

Теперь это много разных видов узлов, таких как узел элементов, узел атрибута и т. Д.

1 голос
/ 26 февраля 2010

Теперь я знаю, что элемент является одним из узлов

Все типы узлов здесь "http://www.w3schools.com/dom/dom_nodetype.asp"

Элемент находится между начальным тегом и концом в конечном теге

Таким образом, текстовый узел является узлом, но не элементом.

...