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


370

我正在使用XML的Java,但我想知道。元素和节点之间有什么区别?


7
当然可以看看w3c。数据模型很容易理解-即使对我也是如此!
xtofl

15
来自forums.asp.net/t/443912.aspx/1#443940的精彩评论:与水果和苹果之间的
atconway

2
元素是格式良好的XML文档的形式定义的一部分,而节点则定义为用于处理XML文档的文档对象模型的一部分。
Jool,2014年

Answers:


259

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

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

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


122
现在我明白了答案...约定很愚蠢。这些词应该相反。用自然英语语言来说,“元素”是最基本的构建基块,其他所有内容都是从中构建的。即自然英语中的一个元素更笼统……
Sam Svenbjorgchristiensensen 2010年

11
@Juan Mendes:这就是根据DOM的含义,但是Sam的观点是,DOM认为节点比元素更基本(原始),而“元素”实际上是指英语中最基本的构造块。
BoltClock

16
@SamSvenbjorgchristiensensen不太准确。元素可以进一步分解为“组成部分”,例如质子,中子和电子,这些元素又可以分解为夸克,中微子等。最好了解图理论中的“节点”是什么意思,然后您将了解XML设计人员为什么选择该名称(DOM只是一个层次图)。
Les Hazlewood 2014年

20
@LesHazlewood实际上,“元素”一词用于描述物理元素(氢,氦等),因为他们确实认为这些东西是不可分割的。直到很久之后他们才发现自己错了-太晚不能改名字; )我同意Sam的观点,他们命名和区分dom元素与节点的方式令人困惑,而且经过了深思熟虑(就像html规范一样)。
BT

3
@BT,如果XML规范委员会生活在古希腊,您的论据就会成立:)他们没有这样做,因此,(显然)表示组成部分的元素的现代(词典)定义很有意义。再加上节点的图论知识,实际上没有太大的解释空间。
Les Hazlewood 2014年

68

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

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

  • Document- Element(最大的一个的), ,,ProcessingInstruction CommentDocumentType
  • DocumentFragment - ,ElementProcessingInstructionComment,,TextCDATASectionEntityReference
  • DocumentType - 没有小孩
  • EntityReference - ,ElementProcessingInstructionComment,,TextCDATASectionEntityReference
  • Element- ,ElementTextComment,,ProcessingInstruction CDATASectionEntityReference
  • Attr- TextEntityReference
  • ProcessingInstruction - 没有小孩
  • Comment - 没有小孩
  • Text - 没有小孩
  • CDATASection - 没有小孩
  • Entity- ,ElementProcessingInstructionComment,,TextCDATASectionEntityReference
  • Notation - 没有小孩

XML信息集(通过XPath的使用)具有一组更小的节点的:

  • 文件信息项
  • 元素信息项
  • 属性信息项
  • 处理指令信息项
  • 未扩展实体参考信息项
  • 角色信息项
  • 评论信息项
  • 文档类型声明信息项
  • 未解析的实体信息项
  • 表示法信息项
  • 命名空间信息项
  • XPath具有以下节点类型:

    • 根节点
    • 元素节点
    • 文字节点
    • 属性节点
    • 命名空间节点
    • 处理指令节点
    • 评论节点

    您的问题元素和节点之间的区别是什么的答案是:

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


    29

    节点是DOM树的一部分,元素是特定类型的节点

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

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


    7
    这个简短的例子使我对所选答案有了更多的了解。
    KMC

    27

    节点可以是许多不同种类的事物:某些文本,注释,元素,实体等。元素是特定种类的节点。


    15

    如各种XML 规范中所述,an element是由开始标签和结束标签以及其间的内容组成的,或者是一个空元素标签(不包含内容或结束标签)。换句话说,这些都是元素:

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

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


    11

    xml文档由嵌套元素组成。元素在其开始标记处开始,并在其结束标记结束。你可能看到的<body></body>在HTML中。开头和结尾标签之间的所有内容都是元素的内容。如果一个元素由一个自闭合标签(例如<br/>)定义,则其内容为空。

    开头标签还可以指定属性,例如。<p class="rant">。在此示例中,属性名称为“ class”,其值为 “ rant”。

    XML语言没有“节点”之类的东西阅读规范,这个词不会出现。

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


    确实出现了该词:“(即,正则表达式的语法树中的每个叶节点)”。它位于非规范性附录中,但确实会发生。在那里,该术语用作解析树中的节点。
    凌晨

    即使人们认为XML定义没有提及节点,为XML的程序解释和操作而定义的文档对象模型(DOM)(由同一标准组织)确实确实定义和使用了术语“节点”。该答案无助于区分术语,也无助于断言它们的含义相同,从而无视各种用法。
    C Perkins


    7

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

    文档还具有子节点,但
    没有属性,没有文本,仅是一个子元素。


    2

    节点定义为:

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

    或为:

    树形视图中的对象,用作容纳相关对象的容器。

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




    -3

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

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

    我不认为您有任何说法的来历?例如,XML标准将术语“元素”定义为空元素标签或从开始标签到结束标签的所有内容。开始标记和空元素标记也不会需要任何元素。您的两个示例都是元素。术语“节点”是在DOM中的其他地方定义的,它是关于对象模型而不是文本本身的。
    凌晨

    -7

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


    9
    因为“并非每个节点都必须是一个元素”,所以“节点和元素相同”的主张是错误的。
    glglgl 2014年

    1
    除了您的描述是错误的,它也不是很有用。您唯一正确的是术语之间存在一些差异,但问题是有什么区别。
    凌晨
    By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
    Licensed under cc by-sa 3.0 with attribution required.