В чем разница между элементом и узлом в XML?

303

Я работаю на Java с XML, и мне интересно; какая разница между элементом и node?

  • 6
    Конечно, посмотрите на w3c . Модель данных легко понять - даже для меня!
  • 13
    Отличный комментарий от forums.asp.net/t/443912.aspx/1#443940 : Так же, как между фруктами и яблоками. Каждый XmlElement является XmlNode, но не каждый XmlNode является XmlElement. XmlElement - это всего лишь один из видов XmlNode. Другие XmlAttribute, XmlText и т. Д.
Показать ещё 2 комментария
Теги:
xmlnode

13 ответов

209
Лучший ответ

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

A Node может быть элементом node, атрибутом node, текстом node или любым другим типом Node, описанным в главе "Node".

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

  • 116
    Теперь, когда я понимаю ответ ... Конвенция глупа. Слова должны быть наоборот. В естественном английском языке «элемент» - это то, что является основным строительным блоком, из которого строится все остальное. т.е. элемент в естественном английском языке является более общим ...
  • 1
    Вы имеете в виду узел более общий?
Показать ещё 10 комментариев
60

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

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

  • Документ - Элемент (максимум один), ProcessingInstruction, Комментарий, DocumentType
  • DocumentFragment - Элемент, ProcessingInstruction, Комментарий, Текст, CDATASection, EntityReference
  • DocumentType - нет детей
  • EntityReference - Элемент, ProcessingInstruction, Комментарий, Текст, CDATASection, EntityReference
  • Элемент - Элемент, Текст, Комментарий, ProcessingInstruction, CDATASection, EntityReference
  • Attr - Текст, EntityReference
  • ProcessingInstruction -- нет детей
  • Комментарий - нет дети
  • Текст - нет дети
  • CDATASection - нет детей
  • Entity - Элемент, ProcessingInstruction, Комментарий, Текст, CDATASection, EntityReference
  • Обозначение - нет дети

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

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

XPath имеет следующие типы Node:

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

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

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

23

A node может быть множеством различных вещей: некоторый текст, комментарий, элемент, сущность и т.д. Элемент представляет собой особый вид node.

21

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

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

У вас есть foo Element (который также является Node, поскольку Element наследует от Node) и Text Node 'This is Text', который является дочерним элементом foo Element/Node

  • 3
    Этот короткий пример дает мне больше понимания, чем выбранный ответ.
13

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

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

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

9

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

В открывающих тегах также могут указываться атрибуты, например. <p class="rant">. В этом примере имя атрибута - "класс", а его значение "rant".

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

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

  • 0
    Слово действительно встречается: «(т. Е. Каждый листовой узел в синтаксическом дереве для регулярного выражения)». Это в ненормативном приложении, но тем не менее это происходит. Там термин используется как узел в дереве разбора.
9

A node - базовый класс для обоих элементов и атрибутов (и в основном все остальные представления XML).

7

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

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

1

A node определяется как:

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

или как:

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

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

1

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

Здесь все типы node " http://www.w3schools.com/dom/dom_nodetype.asp"

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

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

  • 0
    Нам не нравятся w3school вокруг этих частей, поэтому мне сказали. w3fools.com
0

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

-2

XML Element - это XML Node, но с дополнительными элементами, такими как атрибуты.

<a>Lorem Ipsum</a>  //This is a node

<a id="sample">Lorem Ipsum</a>  //This is an element
  • 0
    Я не думаю, что у вас есть источник для этого требования? Например, стандарт XML определяет термин «элемент», являющийся либо пустым тегом элемента, либо всем, начиная от начального тега и заканчивая конечным тегом. Начальный тег и пустой тег элемента не должны иметь никаких элементов. Оба ваших примера являются элементами. Термин «узел» определен в другом месте, в DOM, который относится к объектной модели, а не к самому тексту.
-4

node, и элемент тот же. Каждый элемент является node, но это не значит, что каждый node должен быть элементом.

  • 7
    Поскольку «не каждый узел должен быть элементом», утверждение «узел и элемент одинаковы» неверно.
  • 1
    Кроме того, ваше описание неверно, оно тоже не очень полезно. Единственное, в чем вы правы, так это в том, что между терминами есть некоторая разница, но вопрос в том, какая разница.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню