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

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


person Philip Morton    schedule 25.09.2008    source источник
comment
Обязательно посмотрите w3c. Датамодель легко понять - даже мне!   -  person xtofl    schedule 25.09.2008
comment
Отличный комментарий от forum.asp.net/t/443912.aspx/1#443940: То же, что между фруктом и яблоком. Каждый XmlElement является XmlNode, но не каждый XmlNode является XmlElement. XmlElement - это всего лишь один из видов XmlNode. Другие - XmlAttribute, XmlText и т. Д.   -  person atconway    schedule 09.03.2013
comment
Элемент является частью формального определения правильно сформированного XML-документа, тогда как узел определяется как часть объектной модели документа для обработки XML-документов.   -  person Jool    schedule 04.02.2014


Ответы (13)


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

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

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

person Benoit    schedule 25.09.2008
comment
Теперь, когда я понял ответ ... Соглашение глупо. Слова должны быть наоборот. В естественном английском языке «элемент» - это то, что является самым основным строительным блоком, из которого построено все остальное. т.е. элемент в естественном английском языке является более общим ... - person Sam Svenbjorgchristiensensen; 09.11.2010
comment
вы имеете в виду, что узел более общий? - person Tom; 02.02.2012
comment
@SamSvenbjorgchristiensensen Я всегда называю <p>s и <div>s элементами p и элементами div - person Juan Mendes; 04.04.2012
comment
@ Хуан Мендес: Это то, что они представляют в соответствии с DOM, но, по мнению Сэма, DOM считает узлы более базовыми (примитивными), чем элементы, тогда как element на самом деле относится к самому базовому строительному блоку на английском языке. - person BoltClock; 12.12.2012
comment
@SamSvenbjorgchristiensensen, это не совсем верно. Элементы могут быть разбиты на «составные части», такие как протоны, нейтроны и электроны, которые, в свою очередь, могут быть разбиты на кварки, нейтрино и т. Д. Лучше понять, что означает «узел» в теория графов, и тогда вы поймете, почему дизайнеры XML выбрали это имя (DOM - это просто иерархический граф). - person Les Hazlewood; 27.04.2014
comment
@LesHazlewood Я имел в виду суть слова «элемент» в его различных значениях, а не химический элемент в частности (когда термин «элемент» вошел в употребление для обозначения химических веществ, люди не знали, что они делятся дальше). Все это немного субъективно, поэтому я не могу сказать, что ты прав или нет. Я черпаю свои определения из en.wiktionary.org/wiki/element#Noun - person Sam Svenbjorgchristiensensen; 28.04.2014
comment
@SamSvenbjorgchristiensensen Я лично доверяю Merriam-Webster Wiktionary (кто знает учетные данные вики -основанный автор!). Их определение отдает предпочтение семантике «составной части», химической или нет. Ваше здоровье! - person Les Hazlewood; 28.04.2014
comment
@LesHazlewood На самом деле слово «элемент» использовалось для описания физических элементов (водород, гелий и т. Д.), Потому что они действительно думали, что эти элементы неделимы. Лишь намного позже они узнали, что ошибались - слишком поздно менять имя; ) Я согласен с Сэмом, способ, которым они назвали и дифференцировали элементы dom и узлы, сбивает с толку и плохо продуман (как и большая часть спецификации html). - person B T; 13.06.2014
comment
@BT ваш аргумент был бы несомненным, если бы комитет по спецификациям XML жил в Древней Греции :) Они этого не сделали, и поэтому современное (словарное) определение элемента, которое (явно) представляет составные части, имеет смысл. Добавьте к этому знания теории графов об узлах, и действительно не так много места для интерпретации. - person Les Hazlewood; 13.06.2014
comment
Я думаю, не должно быть различия между Node и Element. Некоторые нюансы только добавляют ненужной сложности и это один из них. - person amphibient; 19.11.2014
comment
Некоторые реальные примеры Xml Node & Xml Element были бы полезны - person Anatoly; 18.06.2018

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

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

  • Document -- Element (maximum of one), ProcessingInstruction, Comment, DocumentType
  • DocumentFragment -- Element, ProcessingInstruction, Comment, Text, CDATASection, EntityReference
  • DocumentType -- no children
  • EntityReference -- Element, ProcessingInstruction, Comment, Text, CDATASection, EntityReference
  • Element -- Element, Text, Comment, ProcessingInstruction, CDATASection, EntityReference
  • Attr -- Text, EntityReference
  • ProcessingInstruction -- no children
  • Comment -- no children
  • Text -- no children
  • CDATASection -- no children
  • Entity -- Element, ProcessingInstruction, Comment, Text, CDATASection, EntityReference
  • Notation -- no children

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

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

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

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

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

    person Dimitre Novatchev    schedule 18.11.2008

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

    e.g. <foo> This is Text </foo>

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

    person mmaibaum    schedule 25.09.2008
    comment
    Этот короткий пример дает мне больше понимания, чем выбранный ответ. - person KMC; 25.01.2018

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

    person Greg Hewgill    schedule 25.09.2008

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

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

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

    person fenomas    schedule 25.09.2008

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

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

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

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

    person Colonel Panic    schedule 03.04.2013
    comment
    Слово действительно встречается: (т.е. каждый листовой узел в синтаксическом дереве для регулярного выражения). Это ненормативное приложение, но, тем не менее, это происходит. Здесь термин используется как узел в дереве синтаксического анализа. - person skyking; 10.03.2017
    comment
    Даже если учесть, что определение XML не упоминает узлы, объектная модель документа (DOM), определенная для программной интерпретации и манипулирования XML (той же самой организацией по стандартам), действительно определяет и использует термин узел. Этот ответ не помогает различать термины и не помогает просто игнорировать различные варианты использования, утверждая, что они означают одно и то же. - person C Perkins; 21.05.2019

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

    person Troels Thomsen    schedule 25.09.2008

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

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

    person eugensk    schedule 25.09.2008

    Узел определяется как:

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

    or as:

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

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

    person Robert Rocha    schedule 09.03.2015

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

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

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

    Итак, текстовый узел - это узел, но не элемент.

    person Community    schedule 26.02.2010

    Элемент - это тип узла, а также атрибуты, текст и т. Д.

    person Simon Keep    schedule 25.09.2008

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

    <a>Lorem Ipsum</a>  //This is a node
    
    <a id="sample">Lorem Ipsum</a>  //This is an element
    
    person Sabique A Khan    schedule 02.09.2016
    comment
    Я не думаю, что у вас есть источник для этого утверждения? Например, стандарт XML определяет, что термин элемент является либо пустым тегом элемента, либо всем, от начального тега до конечного тега включительно. Начальный тег и тег пустого элемента не должны содержать никаких элементов. Оба ваших примера - элементы. Термин узел определен где-то еще, в DOM, который относится к объектной модели, а не в самом тексте. - person skyking; 10.03.2017

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

    person Purna    schedule 23.07.2014
    comment
    Поскольку это не значит, что каждый узел должен быть элементом, узел утверждения и элемент одинаковы, неверны. - person glglgl; 27.08.2014
    comment
    К тому же ваше описание неверное, оно тоже не очень полезно. Единственное, в чем вы правы, это то, что есть некоторая разница между терминами, но вопрос был в том, какая разница. - person skyking; 10.03.2017