Schauen Sie sich doch mal w3c an . Das Datenmodell ist leicht zu verstehen - auch für mich!
xtofl
15
Toller Kommentar von forums.asp.net/t/443912.aspx/1#443940 : Das gleiche wie zwischen Obst und Apfel. Jedes XmlElement ist XmlNode, aber nicht jeder XmlNode ist XmlElement. XmlElement ist nur eine Art von XmlNode. Andere sind XmlAttribute, XmlText usw.
atconway
2
Ein Element ist Teil der formalen Definition eines wohlgeformten XML-Dokuments, während ein Knoten als Teil des Dokumentobjektmodells für die Verarbeitung von XML-Dokumenten definiert ist.
Jool
Antworten:
259
Das Node-Objekt ist der primäre Datentyp für das gesamte DOM.
Ein Knoten kann ein Elementknoten, ein Attributknoten, ein Textknoten oder ein anderer der im Kapitel "Knotentypen" erläuterten Knotentypen sein.
Ein XML-Element ist alles vom Start-Tag des Elements bis zum End-Tag des Elements.
Jetzt, wo ich die Antwort verstehe ... Die Konvention ist dumm. Die Wörter sollten umgekehrt sein. In der natürlichen englischen Sprache ist ein "Element" der grundlegendste Baustein, aus dem alles andere aufgebaut ist. dh ein Element in natürlichem Englisch ist allgemeiner ...
Sam Svenbjorgchristiensensen
11
@ Juan Mendes: Das ist es, was sie laut DOM sind, aber Sams Punkt ist, dass das DOM Knoten grundlegender (primitiver) als Elemente betrachtet, wenn sich "Element" tatsächlich auf den grundlegendsten Baustein in Englisch bezieht.
BoltClock
16
@ SamSvenbjorgchristiensensen das ist nicht ganz richtig. Elemente können weiter in "Bestandteile" wie Protonen, Neutronen und Elektronen zerlegt werden, die wiederum in Quarks, Neutrinos usw. zerlegt werden können. Es ist besser zu verstehen, was ein "Knoten" in der Graphentheorie bedeutet , und dann werden Sie Verstehen Sie, warum die XML-Designer diesen Namen gewählt haben (das DOM ist nur ein hierarchisches Diagramm).
Les Hazlewood
20
@LesHazlewood war eigentlich das Wort „Element“ verwendet , um physikalische Elemente zu beschreiben (Wasserstoff, Helium, usw.) , weil sie taten diese Dinge waren unteilbar denken. Es war erst viel später, als sie herausfanden, dass sie falsch lagen - viel zu spät, um den Namen zu ändern; ) Ich stimme Sam zu, die Art und Weise, wie sie dom-Elemente und Knoten benannten und unterschieden, ist verwirrend und schlecht durchdacht (so viel von der HTML-Spezifikation ist).
BT
3
@BT Ihr Argument würde Wasser halten, wenn das XML-Spezifikationskomitee im antiken Griechenland leben würde :) Sie haben es nicht getan, und als solches ist die moderne (Wörterbuch-) Definition eines Elements, das (eindeutig) Bestandteile darstellt, sinnvoll. Fügen Sie das mit graphentheoretischem Wissen über Knoten hinzu, und es gibt wirklich nicht viel Raum für Interpretation.
Les Hazlewood
68
Unterschiedliche W3C-Spezifikationen definieren unterschiedliche Sätze von "Knotentypen".
Ein Knoten ist ein Teil des DOM-Baums, ein Element ist ein bestimmter Knotentyp
z.B
<foo> This is Text </foo>
Sie haben ein foo-Element (das auch ein Knoten ist, wie es das Element vom Knoten erbt) und einen Textknoten 'Dies ist Text', der ein untergeordnetes Element des foo-Elements / Knotens ist
Dieses kurze Beispiel gibt mir mehr Verständnis als die ausgewählte Antwort.
KMC
27
Ein Knoten kann eine Reihe verschiedener Arten von Dingen sein: Text, ein Kommentar, ein Element, eine Entität usw. Ein Element ist eine bestimmte Art von Knoten.
Wie in den verschiedenen XML- Spezifikationen beschrieben , elementbesteht a aus einem Start- und einem End-Tag sowie dem dazwischen liegenden Inhalt oder alternativ aus einem leeren Element-Tag (das keinen Inhalt oder kein End-Tag enthält). Mit anderen Worten, dies sind alles Elemente:
Obwohl Sie hören, dass "Knoten" mit ungefähr derselben Bedeutung verwendet wird, gibt es keine genaue Definition gemäß XML-Spezifikationen. Es wird normalerweise verwendet, um auf Knoten von Dingen wie DOMs zu verweisen, die eng mit XML verbunden sein können, oder um XML für ihre Darstellung zu verwenden.
Ein XML-Dokument besteht aus verschachtelten Elementen. Ein Element beginnt an seinem öffnenden Tag und endet an seinem schließenden Tag . Sie sind wahrscheinlich gesehen <body>und </body>in HTML. Alles zwischen dem öffnenden und dem schließenden Tag ist der Inhalt des Elements . Wenn ein Element durch ein selbstschließendes Tag (z. B. <br/>) definiert ist, ist sein Inhalt leer.
Das Öffnen von Tags kann auch Attribute angeben , z. <p class="rant">. In diesem Beispiel ist das Attribut Name ist ‚Klasse‘ und dessen Wert ‚rant‘.
Einige Leute verwenden das Wort "Knoten" informell, um Element zu bedeuten, was verwirrend ist, da einige Parser dem Wort auch eine technische Bedeutung geben (Identifizierung von "Textknoten" und "Elementknoten"). Die genaue Bedeutung hängt vom Parser ab, daher ist das Wort schlecht definiert, es sei denn, Sie geben an, welchen Parser Sie verwenden. Wenn Sie Element meinen, sagen Sie "Element" .
Das Wort kommt vor: "(dh jeder Blattknoten im Syntaxbaum für den regulären Ausdruck)". Es befindet sich in einem nicht normativen Anhang, kommt aber dennoch vor. Dort wird der Begriff als Knoten im Analysebaum verwendet.
Skyking
Selbst wenn man bedenkt, dass in der XML-Definition keine Knoten erwähnt werden, definiert und verwendet das für die programmatische Interpretation und Manipulation von XML (von derselben Standardorganisation) definierte Document Object Model (DOM) tatsächlich den Begriff "Knoten". Diese Antwort hilft nicht, die Begriffe zu unterscheiden, und es hilft nicht, die verschiedenen Verwendungen einfach zu ignorieren, indem behauptet wird, dass sie dasselbe bedeuten.
C Perkins
9
Ein Knoten ist die Basisklasse für Elemente und Attribute (und im Grunde auch für alle anderen XML-Darstellungen).
Ich nehme nicht an, dass Sie eine Quelle für diese Behauptung haben? Beispielsweise definiert der XML-Standard den Begriff "Element" entweder als leeres Element-Tag oder als alles von und einschließlich des Start-Tags bis einschließlich des End-Tags. Ein Start - Tag und leere Element - Tag ist nicht brauchen keine Elemente haben. Ihre beiden Beispiele sind Elemente. Der Begriff "Knoten" wird an anderer Stelle im DOM definiert, bei dem es sich um ein Objektmodell handelt und nicht im Text selbst.
Skyking
-7
Knoten & Element sind gleich. Jedes Element ist ein Knoten, aber es ist nicht so, dass jeder Knoten ein Element sein muss.
Da "es ist nicht so, dass jeder Knoten ein Element sein muss", ist die Behauptung "Knoten und Element sind gleich" falsch.
glglgl
1
Abgesehen davon, dass Ihre Beschreibung falsch ist, ist sie auch nicht sehr nützlich. Das einzige, worüber Sie Recht haben, ist, dass es einen Unterschied zwischen den Begriffen gibt, aber die Frage war, welchen Unterschied es gibt.
Antworten:
Das Node-Objekt ist der primäre Datentyp für das gesamte DOM.
Ein Knoten kann ein Elementknoten, ein Attributknoten, ein Textknoten oder ein anderer der im Kapitel "Knotentypen" erläuterten Knotentypen sein.
Ein XML-Element ist alles vom Start-Tag des Elements bis zum End-Tag des Elements.
quelle
Unterschiedliche W3C-Spezifikationen definieren unterschiedliche Sätze von "Knotentypen".
Daher definiert die DOM-Spezifikation die folgenden Knotentypen:
Document
-Element
(maximal eins),ProcessingInstruction
,Comment
,DocumentType
DocumentFragment
-Element
,ProcessingInstruction
,Comment
,Text
,CDATASection
,EntityReference
DocumentType
-- keine KinderEntityReference
-Element
,ProcessingInstruction
,Comment
,Text
,CDATASection
,EntityReference
Element
- -Element
,Text
,Comment
,ProcessingInstruction
,CDATASection
,EntityReference
Attr
-Text
,EntityReference
ProcessingInstruction
-- keine KinderComment
-- keine KinderText
-- keine KinderCDATASection
-- keine KinderEntity
-Element
,ProcessingInstruction
,Comment
,Text
,CDATASection
,EntityReference
Notation
-- keine KinderDas XML-Infoset (von XPath verwendet) verfügt über eine kleinere Anzahl von Knoten:
XPath hat die folgenden Knotentypen:
Die Antwort auf Ihre Frage " Was ist der Unterschied zwischen einem Element und einem Knoten " lautet:
An element is a type of node. Many other types of nodes exist and serve different purposes.
quelle
Ein Knoten ist ein Teil des DOM-Baums, ein Element ist ein bestimmter Knotentyp
z.B
<foo> This is Text </foo>
Sie haben ein foo-Element (das auch ein Knoten ist, wie es das Element vom Knoten erbt) und einen Textknoten 'Dies ist Text', der ein untergeordnetes Element des foo-Elements / Knotens ist
quelle
Ein Knoten kann eine Reihe verschiedener Arten von Dingen sein: Text, ein Kommentar, ein Element, eine Entität usw. Ein Element ist eine bestimmte Art von Knoten.
quelle
Wie in den verschiedenen XML- Spezifikationen beschrieben ,
element
besteht a aus einem Start- und einem End-Tag sowie dem dazwischen liegenden Inhalt oder alternativ aus einem leeren Element-Tag (das keinen Inhalt oder kein End-Tag enthält). Mit anderen Worten, dies sind alles Elemente:Obwohl Sie hören, dass "Knoten" mit ungefähr derselben Bedeutung verwendet wird, gibt es keine genaue Definition gemäß XML-Spezifikationen. Es wird normalerweise verwendet, um auf Knoten von Dingen wie DOMs zu verweisen, die eng mit XML verbunden sein können, oder um XML für ihre Darstellung zu verwenden.
quelle
Ein XML-Dokument besteht aus verschachtelten Elementen. Ein Element beginnt an seinem öffnenden Tag und endet an seinem schließenden Tag . Sie sind wahrscheinlich gesehen
<body>
und</body>
in HTML. Alles zwischen dem öffnenden und dem schließenden Tag ist der Inhalt des Elements . Wenn ein Element durch ein selbstschließendes Tag (z. B.<br/>
) definiert ist, ist sein Inhalt leer.Das Öffnen von Tags kann auch Attribute angeben , z.
<p class="rant">
. In diesem Beispiel ist das Attribut Name ist ‚Klasse‘ und dessen Wert ‚rant‘.Die XML-Sprache hat keinen "Knoten" . Lesen Sie die Spezifikation , das Wort kommt nicht vor.
Einige Leute verwenden das Wort "Knoten" informell, um Element zu bedeuten, was verwirrend ist, da einige Parser dem Wort auch eine technische Bedeutung geben (Identifizierung von "Textknoten" und "Elementknoten"). Die genaue Bedeutung hängt vom Parser ab, daher ist das Wort schlecht definiert, es sei denn, Sie geben an, welchen Parser Sie verwenden. Wenn Sie Element meinen, sagen Sie "Element" .
quelle
Ein Knoten ist die Basisklasse für Elemente und Attribute (und im Grunde auch für alle anderen XML-Darstellungen).
quelle
Element ist die einzige Art von Knoten , die untergeordnete Knoten und Attribute haben kann.
Das Dokument hat auch untergeordnete Knoten, ABER
keine Attribute, keinen Text, genau ein untergeordnetes Element.
quelle
Ein Knoten ist definiert als:
oder als:
Nun gibt es viele verschiedene Arten von Knoten als Elementknoten, Attributknoten usw.
quelle
Jetzt weiß ich, das Element ist eines der Knoten
Alle Knotentypen hier " http://www.w3schools.com/dom/dom_nodetype.asp "
Das Element befindet sich zwischen dem Start-Tag und dem Ende im End-Tag
Der Textknoten ist also ein Knoten, aber kein Element.
quelle
Ein Element ist ein Knotentyp, ebenso wie Attribute, Text usw.
quelle
XML-Element ist ein XML-Knoten, jedoch mit zusätzlichen Elementen wie Attributen.
quelle
Knoten & Element sind gleich. Jedes Element ist ein Knoten, aber es ist nicht so, dass jeder Knoten ein Element sein muss.
quelle