¿Cuál es la diferencia entre un elemento y un nodo en XML?


370

Estoy trabajando en Java con XML y me pregunto; ¿Cuál es la diferencia entre un elemento y un nodo?


77
Claro que eche un vistazo a w3c . El modelo de datos es fácil de entender, ¡incluso para mí!
xtofl

15
Gran comentario de los foros.asp.net/t/443912.aspx/1#443940 : lo mismo que entre fruta y manzana. Cada XmlElement es XmlNode, pero no todos los XmlNode son XmlElement. XmlElement es solo un tipo de XmlNode. Otros son XmlAttribute, XmlText, etc.
atconway

2
Un Elemento es parte de la definición formal de un documento XML bien formado, mientras que un nodo se define como parte del Modelo de Objetos del Documento para procesar documentos XML.
Jool

Respuestas:


259

El objeto Node es el tipo de datos primario para todo el DOM.

Un nodo puede ser un nodo de elemento, un nodo de atributo, un nodo de texto o cualquier otro tipo de nodo explicado en el capítulo "Tipos de nodo".

Un elemento XML es todo, desde (incluida) la etiqueta de inicio del elemento hasta (incluida) la etiqueta final del elemento.


122
Ahora que entiendo la respuesta ... La convención es estúpida. Las palabras deben ser al revés. En inglés natural, un "elemento" es algo que es el bloque de construcción más básico, del cual se construye todo lo demás. es decir, un elemento en inglés natural es más general ...
Sam Svenbjorgchristiensensen

11
@Juan Mendes: Eso es lo que son según el DOM, pero el punto de Sam es que el DOM considera los nodos más básicos (primitivos) que los elementos, cuando "elemento" en realidad se refiere al bloque de construcción más básico en inglés.
BoltClock

16
@SamSvenbjorgchristiensensen eso no es del todo exacto. Los elementos se pueden dividir aún más en 'partes constituyentes' como protones, neutrones y electrones, que a su vez se pueden dividir en quarks, neutrinos, etc. Es mejor entender qué significa un 'nodo' en la teoría de grafos , y luego Comprenda por qué los diseñadores XML eligieron ese nombre (el DOM es solo un gráfico jerárquico).
Les Hazlewood

20
@LesHazlewood En realidad, la palabra "elemento" se utiliza para describir los elementos físicos (hidrógeno, helio, etc.), ya que hicieron pensar estas cosas eran indivisibles. Solo mucho después descubrieron que estaban equivocados, demasiado tarde para cambiar el nombre; ) Estoy de acuerdo con Sam, la forma en que nombraron y diferenciaron los elementos dom frente a los nodos es confusa y mal pensada (como lo es la mayor parte de la especificación html).
BT

3
@BT, su argumento se sostendría si el comité de especificaciones XML viviera en la antigua Grecia :) No lo hicieron, y como tal, la definición moderna (diccionario) de elemento que (claramente) representa partes constituyentes tiene sentido. Agregue eso con el conocimiento de la teoría de grafos de los nodos, y realmente no hay mucho espacio para la interpretación.
Les Hazlewood

68

Las diferentes especificaciones del W3C definen diferentes conjuntos de tipos de "Nodo".

Por lo tanto, la especificación DOM define los siguientes tipos de nodos:

  • Document- Element(máximo de uno), ProcessingInstruction, Comment,DocumentType
  • DocumentFragment - Element, ProcessingInstruction, Comment, Text, CDATASection,EntityReference
  • DocumentType -- sin hijos
  • EntityReference - Element, ProcessingInstruction, Comment, Text, CDATASection,EntityReference
  • Element- Element, Text, Comment, ProcessingInstruction, CDATASection,EntityReference
  • Attr- Text,EntityReference
  • ProcessingInstruction -- sin hijos
  • Comment -- sin hijos
  • Text -- sin hijos
  • CDATASection -- sin hijos
  • Entity- Element, ProcessingInstruction, Comment, Text, CDATASection,EntityReference
  • Notation -- sin hijos

El conjunto de información XML (utilizado por XPath) tiene un conjunto más pequeño de nodos:

  • El elemento de información del documento
  • Elementos de información del elemento
  • Elementos de información de atributos
  • Procesamiento de elementos de información de instrucciones
  • Elementos de información de referencia de entidad sin expandir
  • Elementos de información del personaje
  • Artículos de información de comentarios
  • El elemento de información de declaración de tipo de documento
  • Elementos de información de entidad no analizados
  • Elementos de información de notación
  • Elementos de información del espacio de nombres
  • XPath tiene los siguientes tipos de Nodo:

    • nodos raíz
    • nodos de elementos
    • nodos de texto
    • nodos de atributos
    • nodos de espacio de nombres
    • procesamiento de nodos de instrucciones
    • nodos de comentarios

    La respuesta a su pregunta " ¿Cuál es la diferencia entre un elemento y un nodo " es:

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


    29

    Un nodo es una parte del árbol DOM, un elemento es un tipo particular de nodo

    p.ej <foo> This is Text </foo>

    Tiene un elemento foo (que también es un nodo, ya que Element lo hereda del nodo) y un nodo de texto 'This is Text', que es un elemento secundario del elemento foo / nodo


    77
    Este breve ejemplo me da más comprensión que la respuesta seleccionada.
    KMC

    27

    Un nodo puede ser un número de diferentes tipos de cosas: un texto, un comentario, un elemento, una entidad, etc. Un elemento es un tipo particular de nodo.


    15

    Como se describe en las diversas especificaciones XML , un elementes el que consiste en una etiqueta de inicio y una etiqueta de finalización, y el contenido intermedio, o alternativamente una etiqueta de elemento vacía (que no tiene contenido ni etiqueta de finalización). En otras palabras, estos son todos los elementos:

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

    Aunque escuche "nodo" usado con aproximadamente el mismo significado, no tiene una definición precisa por especificaciones XML. Por lo general, se usa para referirse a nodos de cosas como DOM, que pueden estar estrechamente relacionados con XML o usar XML para su representación.


    11

    Un documento xml está hecho de elementos anidados. Un elemento comienza en su etiqueta de apertura y termina en su etiqueta de cierre . Probablemente te hayan visto <body>y </body>en html. Todo entre las etiquetas de apertura y cierre es el contenido del elemento . Si un elemento se define mediante una etiqueta de cierre automático (p. Ej. <br/>), Entonces su contenido está vacío.

    Abrir etiquetas también puede especificar atributos , por ejemplo. <p class="rant">. En este ejemplo, el nombre del atributo es 'clase' y su valor 'rant'.

    El lenguaje XML no tiene tal cosa como un 'nodo' . Lea la especificación , la palabra no aparece.

    Algunas personas usan la palabra 'nodo' informalmente para significar elemento, lo cual es confuso porque algunos analizadores también le dan a la palabra un significado técnico (identificando 'nodos de texto' y 'nodos de elemento'). El significado exacto depende del analizador, por lo que la palabra está mal definida a menos que indique qué analizador está utilizando. Si te refieres a elemento, di 'elemento' .


    La palabra sí aparece: "(es decir, cada nodo de hoja en el árbol de sintaxis para la expresión regular)". Está en un apéndice no normativo, pero sin embargo ocurre. Allí el término se usa como nodo en el árbol de análisis.
    Skyking

    Incluso si se considera que la definición XML no menciona nodos, el Modelo de Objeto de Documento (DOM) definido para la interpretación programática y la manipulación de XML (por la misma organización de estándares) define y usa el término "nodo". Esta respuesta no ayuda a diferenciar los términos y no ayuda a ignorar los diferentes usos al afirmar que significan lo mismo.
    C Perkins

    9

    Un nodo es la clase base tanto para los elementos como para los atributos (y básicamente para todas las demás representaciones XML también).


    7

    Element es el único tipo de nodo que puede tener nodos y atributos secundarios.

    El documento también tiene nodos secundarios, PERO
    sin atributos, sin texto, exactamente un elemento secundario.


    2

    Un nodo se define como:

    La unidad más pequeña de una estructura válida y completa en un documento.

    o como:

    Un objeto en la vista de árbol que sirve como contenedor para contener objetos relacionados.

    Ahora hay muchos tipos diferentes de nodos como un nodo de elementos, un nodo de atributo, etc.


    1

    Ahora lo sé, el elemento es uno de nodo

    Todos los tipos de nodos aquí " http://www.w3schools.com/dom/dom_nodetype.asp "

    El elemento está entre la etiqueta de inicio y el final en la etiqueta de finalización

    Entonces el nodo de texto es un nodo, pero no un elemento.


    0

    Un elemento es un tipo de nodo al igual que los atributos, el texto, etc.


    -3

    El elemento XML es un nodo XML pero con elementos adicionales como atributos.

    <a>Lorem Ipsum</a>  //This is a node
    
    <a id="sample">Lorem Ipsum</a>  //This is an element

    ¿No asumo que tienes alguna fuente para este reclamo? Por ejemplo, el estándar XML define el término "elemento" como una etiqueta de elemento vacía o todo, desde la etiqueta de inicio hasta la etiqueta de finalización. Una etiqueta de inicio y una etiqueta de elemento vacío no necesitan tener ningún elemento. Sus dos ejemplos son elementos. El término "nodo" se define en otra parte, en DOM, que se trata de un modelo de objeto y no en el texto en sí.
    Skyking

    -7

    nodo y elemento son iguales. Cada elemento es un nodo, pero no es que cada nodo deba ser un elemento.


    99
    Como "no es que cada nodo deba ser un elemento", la afirmación "nodo y elemento son iguales" está equivocada.
    glglgl

    1
    Además de que su descripción es incorrecta, tampoco es muy útil. Lo único correcto es que hay alguna diferencia entre los términos, pero la pregunta era qué diferencia hay.
    Skyking
    Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
    Licensed under cc by-sa 3.0 with attribution required.