【问题标题】:What's the difference between an element and a node in XML?XML中的元素和节点有什么区别?
【发布时间】:2010-09-13 01:14:44
【问题描述】:

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

【问题讨论】:

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

标签: xml xmlnode


【解决方案1】:

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

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

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

【讨论】:

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

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

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

  • Document -- Element(最多 一),ProcessingInstructionComment, DocumentType
  • DocumentFragment -- Element, ProcessingInstruction, Comment, Text, CDATASection, EntityReference
  • DocumentType-- 没有小孩
  • EntityReference -- Element, ProcessingInstruction, Comment, Text, CDATASection, EntityReference
  • Element -- Element, Text, Comment, ProcessingInstruction, CDATASection, EntityReference
  • Attr -- Text, EntityReference
  • ProcessingInstruction - 没有小孩
  • Comment -- 没有 孩子们
  • Text -- 没有 孩子们
  • CDATASection-- 没有小孩
  • Entity -- Element, ProcessingInstruction, Comment, Text, CDATASection, EntityReference
  • Notation -- 没有 孩子们

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

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

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

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

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

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

      • 这个简短的例子让我比选择的答案更能理解。
      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

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

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

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

        【讨论】:

          【解决方案6】:

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

          开始标签也可以指定属性,例如。 &lt;p class="rant"&gt;。在此示例中,属性 name 为“类”,其 为“rant”。

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

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

          【讨论】:

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

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

          【讨论】:

            【解决方案8】:

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

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

            【讨论】:

              【解决方案9】:

              一个节点是defined

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

              或作为:

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

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

              【讨论】:

                【解决方案10】:

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

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

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

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

                【讨论】:

                  【解决方案11】:

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

                  【讨论】:

                    【解决方案12】:

                    XML 元素是一个 XML 节点,但带有属性等附加元素。

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

                    【讨论】:

                    • 我不认为您对此声明有任何来源?例如,XML 标准将术语“元素”定义为空元素标记或从开始标记(包括开始标记)到结束标记(包括结束标记)的所有内容。一个开始标签和空元素标签确实 not 需要有任何元素。你的两个例子都是元素。术语“节点”在其他地方定义,在 DOM 中是关于对象模型而不是在文本本身中。
                    【解决方案13】:

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

                    【讨论】:

                    • 由于“不是每个节点都必须是一个元素”,因此“节点和元素相同”的说法是错误的。
                    • 除了你的描述是错误的,它也不是很有用。您唯一正确的是术语之间存在一些差异,但问题是有什么区别。
                    猜你喜欢
                    • 1970-01-01
                    • 2015-10-06
                    • 2019-07-20
                    • 1970-01-01
                    • 2011-04-11
                    • 2013-04-01
                    • 1970-01-01
                    • 2018-06-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多