ChatGPT解决这个技术问题 Extra ChatGPT

XML中的元素和节点有什么区别?

我正在使用 XML 使用 Java,我想知道;元素和节点有什么区别?

来自 forums.asp.net/t/443912.aspx/1#443940 的精彩评论:与水果和苹果之间的相同。每个 XmlElement 都是 XmlNode,但不是每个 XmlNode 都是 XmlElement。 XmlElement 只是一种 XmlNode。其他还有 XmlAttribute、XmlText 等。
元素是格式良好的 XML 文档的正式定义的一部分,而节点被定义为用于处理 XML 文档的文档对象模型的一部分。

B
Benoit

Node 对象是整个 DOM 的主要数据类型。

节点可以是元素节点、属性节点、文本节点或“节点类型”一章中解释的任何其他节点类型。

XML 元素是从(包括)元素的开始标记到(包括)元素的结束标记的所有内容。


现在我明白了答案......惯例很愚蠢。话应该反过来。在自然英语中,“元素”是最基本的构建块,其他一切都是由它构建的。即自然英语中的一个元素更普遍......
@Juan Mendes:根据DOM,这就是它们的含义,但是Sam的观点是DOM认为节点比元素更基本(原始),而“元素”实际上是指英语中最基本的构建块。
@SamSvenbjorgchristiensensen 这不太准确。元素可以进一步分解为“组成部分”,如质子、中子和电子,而这些部分又可以分解为夸克、中微子等。最好理解 graph theory 中“节点”的含义,然后你将理解 XML 设计者为何选择该名称(DOM 只是一个层次图)。
@LesHazlewood 实际上,“元素”这个词被用来描述物理元素(氢、氦等),因为他们确实认为这些东西是不可分割的。直到很久以后他们才发现他们错了——改名太晚了; ) 我同意 Sam 的观点,他们命名和区分 dom 元素与节点的方式令人困惑,而且考虑不周(就像 html 规范的大部分内容一样)。
@BT如果XML规范委员会生活在古希腊,您的论点将站得住脚:)他们没有,因此,(清楚地)代表组成部分的元素的现代(字典)定义是有道理的。加上节点的图论知识,真的没有太多解释的余地。
B
Bobby

不同的 W3C 规范定义了不同的“节点”类型集。

因此,DOM spec 定义了以下类型的节点:

Document -- 元素(最多一个)、ProcessingInstruction、Comment、DocumentType

DocumentFragment -- 元素、处理指令、注释、文本、CDATASection、EntityReference

DocumentType -- 没有孩子

EntityReference -- 元素、ProcessingInstruction、注释、文本、CDATASection、EntityReference

元素 -- 元素、文本、注释、处理指令、CDATASection、EntityReference

Attr -- 文本、实体引用

处理指令——没有孩子

评论——没有孩子

文本 - 没有孩子

CDATASection——没有孩子

实体 -- 元素、处理指令、注释、文本、CDATASection、EntityReference

符号 - 没有孩子

XML Infoset(由 XPath 使用)有一组较小的节点:

文档信息项

元素信息项

属性信息项

处理指令信息项

未扩展的实体参考信息项

字符信息项

评论信息项

文件类型声明信息项

未解析的实体信息项

符号信息项

命名空间信息项

XPath 具有以下节点类型:

根节点

元素节点

文本节点

属性节点

命名空间节点

处理指令节点

评论节点

您的问题“元素和节点有什么区别”的答案是:

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


m
mmaibaum

Node 是 DOM 树的一部分,Element 是 Node 的一种特殊类型

例如<foo> This is Text </foo>

您有一个 foo 元素(它也是一个节点,因为 Element 继承自 Node)和一个文本节点“这是文本”,它是 foo 元素/节点的子节点


这个简短的例子让我比选择的答案更了解。
G
Greg Hewgill

一个节点可以是许多不同种类的东西:一些文本、评论、元素、实体等。元素是一种特定类型的节点。


f
fenomas

如各种 XML specifications 中所述,element 是由开始标记和结束标记以及两者之间的内容组成的,或者是一个空元素标记(没有内容或结束标记)。换句话说,这些都是元素:

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

尽管您听到“节点”的含义大致相同,但它并没有根据 XML 规范进行精确定义。它通常用于指代诸如 DOM 之类的事物的节点,这些节点可能与 XML 密切相关,或者使用 XML 来表示它们。


C
Colonel Panic

xml 文档由嵌套元素组成。一个元素从它的开始标签开始,到它的结束标签结束。您可能会在 html 中看到 <body></body>。开始标签和结束标签之间的所有内容都是元素的内容。如果一个元素由一个自闭合标签(例如 <br/>)定义,那么它的内容是空的。

打开标签也可以指定属性,例如。 <p class="rant">。在此示例中,属性 name 为“类”,其 为“rant”。

XML 语言没有“节点”之类的东西Read the spec,这个词没有出现。

有些人非正式地使用“节点”这个词来表示元素,这令人困惑,因为一些解析器还赋予这个词一个技术含义(识别“文本节点”和“元素节点”)。确切的含义取决于解析器,因此除非您说明正在使用的解析器,否则该词的定义不明确。如果您的意思是元素,请说“元素”。


这个词确实出现了:“(即,正则表达式的语法树中的每个叶节点)”。它在一个非规范性附录中,但它确实发生了。在那里,该术语被用作解析树中的节点。
即使有人认为 XML 定义没有提及节点,但为 XML 的编程解释和操作定义的文档对象模型 (DOM)(由同一标准组织)确实定义并使用了术语“节点”。该答案无助于区分这些术语,并且通过断言它们的含义相同而忽略各种用途也无济于事。
T
Troels Thomsen

节点是元素和属性(基本上也是所有其他 XML 表示)的基类。


e
eugensk

元素是唯一可以具有子节点和属性的节点。

文档也有子节点,但没有属性,没有文本,只有一个子元素。


R
Robert Rocha

一个节点是 defined

文档中有效、完整结构的最小单位。

或作为:

树视图中的对象,用作保存相关对象的容器。

现在它们有许多不同类型的节点,如元素节点、属性节点等。


佚名

现在我知道,元素是节点之一

此处的所有节点类型“http://www.w3schools.com/dom/dom_nodetype.asp

元素在开始标签和结束标签之间

所以文本节点是一个节点,而不是一个元素。


S
Simon Keep

元素是一种节点,属性、文本等也是如此。


S
Sabique A Khan

XML 元素是一个 XML 节点,但具有其他元素,例如属性。

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

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

我不认为你有这个说法的任何来源?例如,XML 标准将术语“元素”定义为空元素标记或从开始标记(包括开始标记)到结束标记(包括结束标记)的所有内容。开始标签和空元素标签不需要有任何元素。你的两个例子都是元素。术语“节点”在其他地方定义,在 DOM 中是关于对象模型的,而不是在文本本身中。
P
Purna

节点和元素相同。每个元素都是一个节点,但并不是每个节点都必须是一个元素。


由于“并不是每个节点都必须是一个元素”,因此“节点和元素相同”的说法是错误的。
除了你的描述是错误的,它也不是很有用。您唯一正确的是术语之间存在一些差异,但问题是有什么区别。