模块 java.xml

接口 Document

所有父级接口:
Node
所有已知的子接口:
HTMLDocument

public interface Document extends Node
Document 接口表示整个 HTML 或 XML 文档。从概念上讲,它是文档树的根,并提供对文档数据的主要访问。

由于元素、文本节点、注释、处理指令等不能存在于 Document 上下文之外,因此 Document 接口还包含创建这些对象所需的工厂方法。创建的 Node 对象具有 ownerDocument 属性,该属性将它们与创建它们的上下文中的 Document 相关联。

另见 文档对象模型 (DOM) 级别 3 核心规范

  • 方法详情

    • getDoctype

      DocumentType  getDoctype()
      与本文档相关的文档类型声明(参见 DocumentType )。对于没有文档类型声明的 XML 文档,它返回 null 。对于 HTML 文档,可以返回一个 DocumentType 对象,与 HTML 文档中是否存在文档类型声明无关。
      这提供了直接访问 DocumentType 节点,这个 Document 的子节点。此节点可以在文档创建时设置,然后通过使用子节点操作方法(例如 Node.insertBeforeNode.replaceChild )进行更改。但是请注意,虽然某些实现可能会根据创建时指定的 DocumentType 实例化不同类型的 Document 对象,以支持除“核心”之外的其他功能,例如“HTML” [DOM 2 级 HTML ] ,但之后更改它的可能性很小在更改支持的功能时。
      自从:
      1.4、DOM Level 3
    • getImplementation

      DOMImplementation  getImplementation()
      处理此文档的 DOMImplementation 对象。一个 DOM 应用程序可以使用来自多个实现的对象。
    • getDocumentElement

      Element  getDocumentElement()
      这是一个方便的属性,允许直接访问作为文档的文档元素的子节点。
    • createElement

      Element  createElement(String  tagName) throws DOMException
      创建指定类型的元素。请注意,返回的实例实现了 Element 接口,因此可以直接在返回的对象上指定属性。
      此外,如果存在具有默认值的已知属性,则会自动创建表示它们的 Attr 个节点并将其附加到元素。
      要创建具有限定名称和命名空间 URI 的元素,请使用 createElementNS 方法。
      参数:
      tagName - 要实例化的元素类型的名称。对于 XML,这是区分大小写的,否则取决于所使用的标记语言的大小写敏感度。在这种情况下,名称会通过 DOM 实现映射到该标记的规范形式。
      返回:
      一个新的 Element 对象,其 nodeName 属性设置为 tagNamelocalNameprefixnamespaceURI 设置为 null
      抛出:
      DOMException - INVALID_CHARACTER_ERR:如果指定的名称不是根据 Document.xmlVersion 属性中指定的使用中的 XML 版本的 XML 名称,则引发。
    • createDocumentFragment

      DocumentFragment  createDocumentFragment()
      创建一个空的 DocumentFragment 对象。
      返回:
      一个新的 DocumentFragment
    • createTextNode

      Text  createTextNode(String  data)
      在给定指定字符串的情况下创建一个 Text 节点。
      参数:
      data - 节点的数据。
      返回:
      新的 Text 对象。
    • createComment

      Comment  createComment(String  data)
      在给定指定字符串的情况下创建一个 Comment 节点。
      参数:
      data - 节点的数据。
      返回:
      新的 Comment 对象。
    • createCDATASection

      CDATASection  createCDATASection(String  data) throws DOMException
      创建一个值为指定字符串的CDATASection节点。
      参数:
      data - CDATASection 内容的数据。
      返回:
      新的 CDATASection 对象。
      抛出:
      DOMException - NOT_SUPPORTED_ERR:如果此文档是 HTML 文档则引发。
    • createProcessingInstruction

      ProcessingInstruction  createProcessingInstruction(String  target, String  data) throws DOMException
      根据指定的名称和数据字符串创建一个 ProcessingInstruction 节点。
      参数:
      target - 处理指令的目标部分。与 Document.createElementNSDocument.createAttributeNS 不同,没有对目标名称进行名称空间格式正确的检查。应用程序应调用 Document.normalizeDocument() 并将参数“命名空间”设置为 true,以确保目标名称的命名空间格式正确。
      data - 节点的数据。
      返回:
      新的 ProcessingInstruction 对象。
      抛出:
      DOMException - INVALID_CHARACTER_ERR:如果指定的目标不是根据 Document.xmlVersion 属性中指定的使用中的 XML 版本的 XML 名称,则引发。
      NOT_SUPPORTED_ERR:如果此文档是 HTML 文档则引发。
    • createAttribute

      Attr  createAttribute(String  name) throws DOMException
      创建给定名称的 Attr。请注意,然后可以使用 setAttributeNode 方法在 Element 上设置 Attr 实例。
      要创建具有限定名称和命名空间 URI 的属性,请使用 createAttributeNS 方法。
      参数:
      name - 属性的名称。
      返回:
      一个新的 Attr 对象,其 nodeName 属性设置为 namelocalNameprefixnamespaceURI 设置为 null。该属性的值为空字符串。
      抛出:
      DOMException - INVALID_CHARACTER_ERR:如果指定的名称不是根据 Document.xmlVersion 属性中指定的使用中的 XML 版本的 XML 名称,则引发。
    • createEntityReference

      EntityReference  createEntityReference(String  name) throws DOMException
      创建一个 EntityReference 对象。此外,如果引用的实体已知,EntityReference 节点的子列表将与对应的Entity 节点的子列表相同。

      笔记:如果 Entity 节点的任何后代具有未绑定的命名空间前缀,则创建的 EntityReference 节点的相应后代也未绑定; (它的 namespaceURInull )。在这种情况下,DOM 级别 2 和 3 不支持任何解析名称空间前缀的机制。

      参数:
      name - 要引用的实体的名称。与 Document.createElementNSDocument.createAttributeNS 不同,不会对实体名称进行名称空间格式正确的检查。应用程序应调用 Document.normalizeDocument() 并将参数“命名空间”设置为 true,以确保实体名称的命名空间格式正确。
      返回:
      新的 EntityReference 对象。
      抛出:
      DOMException - INVALID_CHARACTER_ERR:如果指定的名称不是根据 Document.xmlVersion 属性中指定的使用中的 XML 版本的 XML 名称,则引发。
      NOT_SUPPORTED_ERR:如果此文档是 HTML 文档则引发。
    • getElementsByTagName

      NodeList  getElementsByTagName(String  tagname)
      按文档顺序返回具有给定标签名称并包含在文档中的所有 ElementsNodeList
      参数:
      tagname - 要匹配的标签的名称。特殊值“*”匹配所有标签。对于XML,tagname参数是区分大小写的,否则取决于所使用的标记语言的大小写敏感度。
      返回:
      包含所有匹配的 Elements 的新 NodeList 对象。
    • importNode

      Node  importNode(Node  importedNode, boolean deep) throws DOMException
      将节点从另一个文档导入到此文档,而不更改或删除原始文档中的源节点;此方法创建源节点的新副本。返回的节点没有父节点; (parentNodenull )。
      对于所有节点,导入节点会创建导入文档拥有的节点对象,其属性值与源节点的 nodeNamenodeType 相同,加上与名称空间相关的属性(prefixlocalNamenamespaceURI)。与 cloneNode 操作一样,源节点没有改变。与导入节点关联的用户数据不会被保留。但是,如果已指定任何 UserDataHandlers 以及关联的数据,将在该方法返回之前使用适当的参数调用这些处理程序。
      附加信息被适当地复制到 nodeType ,试图反映如果将 XML 或 HTML 源片段从一个文档复制到另一个文档时预期的行为,认识到这两个文档在 XML 情况下可能具有不同的 DTD。以下列表描述了每种类型节点的细节。
      ATTRIBUTE_NODE
      在生成的 Attr 上,ownerElement 属性设置为 nullspecified 标志设置为 true。递归导入源 Attr 的后代,并重新组合生成的节点以形成相应的子树。注意deep参数对Attr节点没有影响;进口时,他们总是带着孩子。
      DOCUMENT_FRAGMENT_NODE
      如果 deep 选项设置为 true ,则递归导入源 DocumentFragment 的后代,并在导入的 DocumentFragment 下重新组装生成的节点以形成相应的子树。否则,这只会生成一个空的 DocumentFragment
      DOCUMENT_NODE
      Document 节点无法导入。
      DOCUMENT_TYPE_NODE
      DocumentType 节点无法导入。
      ELEMENT_NODE
      源元素的 Specified 属性节点被导入,生成的 Attr 节点附加到生成的 Elementnot 复制了默认属性,但如果要导入的文档定义了此元素名称的默认属性,则会分配这些属性。如果 importNode deep 参数设置为 true ,则递归导入源元素的后代,并重新组合生成的节点以形成相应的子树。
      ENTITY_NODE
      Entity 节点可以导入,但是在当前版本的 DOM 中,DocumentType 是只读的。将这些导入的节点添加到 DocumentType 的能力将被考虑添加到 DOM 的未来版本中。导入时,将复制 publicIdsystemIdnotationName 属性。如果请求 deep 导入,则递归导入源 Entity 的后代,并重新组装生成的节点以形成相应的子树。
      ENTITY_REFERENCE_NODE
      只有 EntityReference 本身被复制,即使请求 deep 导入,因为源文档和目标文档可能对实体的定义不同。如果要导入的文档为此实体名称提供了定义,则会分配其值。
      NOTATION_NODE
      Notation 节点可以导入,但是在当前版本的 DOM 中,DocumentType 是只读的。将这些导入的节点添加到 DocumentType 的能力将被考虑添加到 DOM 的未来版本中。导入时,将复制 publicIdsystemId 属性。请注意,deep 参数对此类节点没有影响,因为它们不能有任何子节点。
      PROCESSING_INSTRUCTION_NODE
      导入的节点从源节点复制其 targetdata 值。请注意,deep 参数对此类节点没有影响,因为它们不能有任何子节点。
      TEXT_NODE, CDATA_SECTION_NODE, COMMENT_NODE
      这三种类型的节点继承自 CharacterData 从源节点复制它们的 datalength 属性。请注意,deep 参数对这些类型的节点没有影响,因为它们不能有任何子节点。
      参数:
      importedNode - 要导入的节点。
      deep - 如果是 true ,则递归导入指定节点下的子树;如果是 false ,只导入节点本身,如上所述。这对不能有任何子节点的节点以及 AttrEntityReference 节点没有影响。
      返回:
      属于此 Document 的导入节点。
      抛出:
      DOMException - NOT_SUPPORTED_ERR:如果不支持正在导入的节点类型,则引发。
      INVALID_CHARACTER_ERR:根据 Document.xmlVersion 属性中指定的使用中的 XML 版本,如果导入的名称之一不是 XML 名称,则引发。例如,当将 XML 1.1 [XML 1.1 ] 元素导入 XML 1.0 文档时,可能会发生这种情况。
      自从:
      1.4、DOM Level 2
    • createElementNS

      Element  createElementNS(String  namespaceURI, String  qualifiedName) throws DOMException
      创建给定限定名称和命名空间 URI 的元素。
      根据 [XML 命名空间 ],如果应用程序希望没有命名空间,则它们必须使用值 null 作为方法的 namespaceURI 参数。
      参数:
      namespaceURI - 要创建的元素的命名空间 URI。
      qualifiedName - 要实例化的元素类型的限定名称。
      返回:
      具有以下属性的新 Element 对象:
      Element 对象的属性
      Attribute Value
      Node.nodeName qualifiedName
      Node.namespaceURI namespaceURI
      Node.prefix 前缀,从 qualifiedName 中提取,如果没有前缀则为 null
      Node.localName 本地名称,从 qualifiedName 中提取
      Element.tagName qualifiedName
      抛出:
      DOMException - INVALID_CHARACTER_ERR:如果指定的 qualifiedName 不是根据 Document.xmlVersion 属性中指定的使用中的 XML 版本的 XML 名称,则引发。
      NAMESPACE_ERR:如果 qualifiedName 是格式错误的限定名称,如果 qualifiedName 有前缀且 namespaceURInull,或者如果 qualifiedName 的前缀是“xml”并且 namespaceURI 不同于“ http://www.w3.org/XML/1998/namespace” [XML 命名空间 ],则引发,或者如果qualifiedName或其前缀是“xmlns”并且namespaceURI不同于“http://www.w3.org/2000/xmlns/”,或者如果namespaceURI是“http://www.w3.org/2000/xmlns/”并且qualifiedName及其前缀都不是“xmlns”。
      NOT_SUPPORTED_ERR:如果当前文档不支持 "XML" 特性,则总是抛出,因为命名空间是由 XML 定义的。
      自从:
      1.4、DOM Level 2
    • createAttributeNS

      Attr  createAttributeNS(String  namespaceURI, String  qualifiedName) throws DOMException
      创建给定限定名称和命名空间 URI 的属性。
      根据 [XML 命名空间 ],如果应用程序不希望有命名空间,则它们必须使用值 null 作为方法的 namespaceURI 参数。
      参数:
      namespaceURI - 要创建的属性的命名空间 URI。
      qualifiedName - 要实例化的属性的限定名称。
      返回:
      具有以下属性的新 Attr 对象:
      Attr 对象的属性
      Attribute Value
      Node.nodeName 限定名称
      Node.namespaceURI namespaceURI
      Node.prefix 前缀,从 qualifiedName 中提取,如果没有前缀则为 null
      Node.localName 本地名称,从 qualifiedName 中提取
      Attr.name qualifiedName
      Node.nodeValue 空字符串
      抛出:
      DOMException - INVALID_CHARACTER_ERR:如果指定的 qualifiedName 不是根据 Document.xmlVersion 属性中指定的使用中的 XML 版本的 XML 名称,则引发。
      namespace_err:如果qualifiedName是一个畸形的合格名称,则升级,如果qualifiedName有前缀,并且_N53577_是null,如果qualifiedNamequalifiedName具有“ XML”和“ xml” 535577_N的前缀,则6_或它前缀是“xmlns”并且namespaceURI 不同于“http://www.w3.org/2000/xmlns/”,或者如果namespaceURI 是“http://www.w3.org/2000/xmlns/”并且qualifiedName 及其前缀都不是“xmlns”。
      NOT_SUPPORTED_ERR:如果当前文档不支持 "XML" 特性,则总是抛出,因为命名空间是由 XML 定义的。
      自从:
      1.4、DOM Level 2
    • getElementsByTagNameNS

      NodeList  getElementsByTagNameNS(String  namespaceURI, String  localName)
      按文档顺序返回具有给定本地名称和命名空间 URI 的所有 ElementsNodeList
      参数:
      namespaceURI - 要匹配的元素的名称空间 URI。特殊值 "*" 匹配所有命名空间。
      localName - 要匹配的元素的本地名称。特殊值“*”匹配所有本地名称。
      返回:
      包含所有匹配的 Elements 的新 NodeList 对象。
      自从:
      1.4、DOM Level 2
    • getElementById

      Element  getElementById(String  elementId)
      返回具有给定值的 ID 属性的 Element。如果不存在这样的元素,则返回 null 。如果不止一个元素具有具有该值的 ID 属性,则返回的内容是未定义的。
      DOM 实现应使用属性 Attr.isId 来确定属性是否为 ID 类型。

      笔记:名称为“ID”或“id”的属性不是 ID 类型,除非如此定义。

      参数:
      elementId - 元素的唯一 id 值。
      返回:
      匹配元素或 null(如果没有)。
      自从:
      1.4、DOM Level 2
    • getInputEncoding

      String  getInputEncoding()
      指定解析时此文档使用的编码的属性。这是 null 当它不知道时,例如在内存中创建 Document 时。
      自从:
      1.5,DOM 级别 3
    • getXmlEncoding

      String  getXmlEncoding()
      作为 声明 的一部分,指定此文档编码的属性。这是 null 当未指定或未知时,例如在内存中创建 Document 时。
      自从:
      1.5,DOM 级别 3
    • getXmlStandalone

      boolean getXmlStandalone()
      作为 声明 的一部分,指定此文档是否独立的属性。未指定时为 false

      笔记:设置此属性时不对值进行验证。应用程序应将 Document.normalizeDocument() 与“验证”参数一起使用,以验证该值是否与 [XML 1.0] 中定义的 独立文档声明的有效性约束 匹配。

      自从:
      1.5,DOM 级别 3
    • setXmlStandalone

      void setXmlStandalone(boolean xmlStandalone) throws DOMException
      作为 声明 的一部分,指定此文档是否独立的属性。未指定时为 false

      笔记:设置此属性时不对值进行验证。应用程序应将 Document.normalizeDocument() 与“验证”参数一起使用,以验证该值是否与 [XML 1.0] 中定义的 独立文档声明的有效性约束 匹配。

      抛出:
      DOMException - NOT_SUPPORTED_ERR:如果此文档不支持“XML”功能则引发。
      自从:
      1.5,DOM 级别 3
    • getXmlVersion

      String  getXmlVersion()
      作为 声明 的一部分,指定本文档版本号的属性。如果没有声明并且此文档支持“XML”功能,则值为 "1.0" 。如果此文档不支持“XML”功能,则该值始终为 null 。更改此属性将影响检查 XML 名称中无效字符的方法。应用程序应调用 Document.normalizeDocument() 以检查 Node 中已经属于此 Document 的无效字符。
      DOM 应用程序可以使用带有参数值“XMLVersion”和“1.0”(分别)的DOMImplementation.hasFeature(feature, version) 方法来确定实现是否支持[XML 1.0]。 DOM 应用程序可以使用参数值“XMLVersion”和“1.1”(分别)的相同方法来确定实现是否支持 [XML 1.1]。在这两种情况下,为了支持 XML,实现也必须支持本规范中定义的“XML”特性。 Document 支持“XMLVersion”功能版本的对象在使用 Document.xmlVersion 时不得针对相同版本号引发 NOT_SUPPORTED_ERR 异常。
      自从:
      1.5,DOM 级别 3
    • setXmlVersion

      void setXmlVersion(String  xmlVersion) throws DOMException
      作为 声明 的一部分,指定本文档版本号的属性。如果没有声明并且此文档支持“XML”功能,则值为 "1.0" 。如果此文档不支持“XML”功能,则该值始终为 null 。更改此属性将影响检查 XML 名称中无效字符的方法。应用程序应调用 Document.normalizeDocument() 以检查 Node 中已经属于此 Document 的无效字符。
      DOM 应用程序可以使用带有参数值“XMLVersion”和“1.0”(分别)的DOMImplementation.hasFeature(feature, version) 方法来确定实现是否支持[XML 1.0]。 DOM 应用程序可以使用参数值“XMLVersion”和“1.1”(分别)的相同方法来确定实现是否支持 [XML 1.1]。在这两种情况下,为了支持 XML,实现也必须支持本规范中定义的“XML”特性。 Document 支持“XMLVersion”功能版本的对象在使用 Document.xmlVersion 时不得针对相同版本号引发 NOT_SUPPORTED_ERR 异常。
      抛出:
      DOMException - NOT_SUPPORTED_ERR:如果版本设置为此 Document 不支持的值,或者如果此文档不支持“XML”功能,则引发。
      自从:
      1.5,DOM 级别 3
    • getStrictErrorChecking

      boolean getStrictErrorChecking()
      指定是否强制执行错误检查的属性。当设置为 false 时,实现可以自由地不测试通常在 DOM 操作上定义的每个可能的错误情况,并且在使用 Document.normalizeDocument() 时不会在 DOM 操作上引发任何 DOMException 或报告错误。如果出现错误,行为是未定义的。此属性默认为 true
      自从:
      1.5,DOM 级别 3
    • setStrictErrorChecking

      void setStrictErrorChecking(boolean strictErrorChecking)
      指定是否强制执行错误检查的属性。当设置为 false 时,实现可以自由地不测试通常在 DOM 操作上定义的每个可能的错误情况,并且在使用 Document.normalizeDocument() 时不会在 DOM 操作上引发任何 DOMException 或报告错误。如果出现错误,行为是未定义的。此属性默认为 true
      自从:
      1.5,DOM 级别 3
    • getDocumentURI

      String  getDocumentURI()
      文档的位置或 null 如果未定义或如果 Document 是使用 DOMImplementation.createDocument 创建的。设置该属性时不进行词法检查;这可能会导致在使用 Node.baseURI 时返回 null 值。
      请注意,当 Document 支持功能“HTML” [DOM 2 级 HTML ] 时,HTML BASE 元素的 href 属性在计算 Node.baseURI 时优先于此属性。
      自从:
      1.5,DOM 级别 3
    • setDocumentURI

      void setDocumentURI(String  documentURI)
      文档的位置或 null 如果未定义或如果 Document 是使用 DOMImplementation.createDocument 创建的。设置该属性时不进行词法检查;这可能会导致在使用 Node.baseURI 时返回 null 值。
      请注意,当 Document 支持功能“HTML” [DOM 2 级 HTML ] 时,HTML BASE 元素的 href 属性在计算 Node.baseURI 时优先于此属性。
      自从:
      1.5,DOM 级别 3
    • adoptNode

      Node  adoptNode(Node  source) throws DOMException
      尝试将另一个文档中的节点采用到该文档中。如果支持,它会更改源节点的ownerDocument、它的子节点以及附加的属性节点(如果有的话)。如果源节点有父节点,则首先将其从其父节点的子列表中删除。这有效地允许将子树从一个文档移动到另一个文档(不像importNode()创建源节点的副本而不是移动它)。当它失败时,应用程序应该改用 Document.importNode()。请注意,如果采用的节点已经是该文档的一部分(即源文档和目标文档相同),此方法仍然具有将源节点从其父节点的子列表中删除的效果(如果有的话)。以下列表描述了每种类型节点的细节。
      ATTRIBUTE_NODE
      在采用的 Attr 上,ownerElement 属性设置为 nullspecified 标志设置为 true。源 Attr 的后代被递归采用。
      DOCUMENT_FRAGMENT_NODE
      递归采用源节点的后代。
      DOCUMENT_NODE
      Document 个节点不能被采用。
      DOCUMENT_TYPE_NODE
      DocumentType 个节点不能被采用。
      ELEMENT_NODE
      Specified 源元素的属性节点被采用。默认属性将被丢弃,但如果被采用的文档定义了此元素名称的默认属性,则会分配这些属性。递归采用源元素的后代。
      ENTITY_NODE
      Entity 个节点不能被采用。
      ENTITY_REFERENCE_NODE
      只有 EntityReference 节点本身被采用,后代被丢弃,因为源文档和目标文档可能对实体的定义不同。如果要导入的文档为此实体名称提供了定义,则会分配其值。
      NOTATION_NODE
      Notation 个节点不能被采用。
      PROCESSING_INSTRUCTION_NODE, TEXT_NODE, CDATA_SECTION_NODE, COMMENT_NODE
      这些节点都可以采用。没有细节。

      笔记:由于与 Document.importNode() 方法不同,它不会创建新节点,因此此方法不会引发 INVALID_CHARACTER_ERR 异常,应用程序应根据使用的 XML 版本使用 Document.normalizeDocument() 方法检查导入的名称是否不是 XML 名称。

      参数:
      source - 要移入此文档的节点。
      返回:
      采用的节点,或 null 如果此操作失败,例如当源节点来自不同的实现时。
      抛出:
      DOMException - NOT_SUPPORTED_ERR:如果源节点的类型为 DOCUMENTDOCUMENT_TYPE 则引发。
      NO_MODIFICATION_ALLOWED_ERR:当源节点为只读时引发。
      自从:
      1.5,DOM 级别 3
    • getDomConfig

      DOMConfiguration  getDomConfig()
      调用 Document.normalizeDocument() 时使用的配置。
      自从:
      1.5,DOM 级别 3
    • normalizeDocument

      void normalizeDocument()
      此方法的作用就好像文档正在经历一个保存和加载循环,将文档置于“正常”形式。因此,此方法更新 EntityReference 个节点的替换树并规范化 Text 个节点,如方法 Node.normalize() 中所定义。
      否则,实际结果取决于在 Document.domConfig 对象上设置的功能以及控制实际发生的操作。值得注意的是,此方法还可以根据中描述的算法使文档命名空间格式正确,检查字符规范化,删除 CDATASection 节点等。有关详细信息,请参见 DOMConfiguration
      // Keep in the document
       the information defined // in the XML Information Set (Java example)
       DOMConfiguration docConfig = myDocument.getDomConfig();
       docConfig.setParameter("infoset", Boolean.TRUE);
       myDocument.normalizeDocument();

      当支持时,会生成突变事件以反映文档上发生的更改。
      如果在调用此方法期间发生错误,例如尝试更新只读节点或 Node.nodeName 包含根据正在使用的 XML 版本的无效字符,将使用 DOMErrorHandler 报告错误或警告(DOMError.SEVERITY_ERRORDOMError.SEVERITY_WARNING )与“error-handler”参数关联的对象。请注意,如果实现无法从错误中恢复,此方法也可能会报告致命错误 (DOMError.SEVERITY_FATAL_ERROR)。
      自从:
      1.5,DOM 级别 3
    • renameNode

      Node  renameNode(Node  n, String  namespaceURI, String  qualifiedName) throws DOMException
      重命名类型为 ELEMENT_NODEATTRIBUTE_NODE 的现有节点。
      如果可能,这只会更改给定节点的名称,否则会创建一个具有指定名称的新节点,并用新节点替换现有节点,如下所述。
      如果无法简单地更改给定节点的名称,则执行以下操作:创建新节点,在新节点上注册任何已注册的事件监听器,从该节点删除附加到旧节点的任何用户数据,如果旧节点有父节点,则从其父节点中删除旧节点,将子节点移动到新节点,如果重命名节点是Element,则将其属性移动到新节点,将新节点插入到旧节点使用的位置如果它有一个在其父节点的子节点列表中,则将附加到旧节点的用户数据附加到新节点。
      当被重命名的节点是 Element 时,仅移动指定的属性,根据新元素名称更新源自 DTD 的默认属性。此外,该实现可能会更新其他模式的默认属性。应用程序应该使用 Document.normalizeDocument() 来保证这些属性是最新的。
      当被重命名的节点是附加到 ElementAttr 时,该节点首先从 Element 属性map中删除。然后,一旦重命名,通过修改现有节点或如上所述创建一个新节点,它就会被放回去。
      此外,
      • 用户数据事件 NODE_RENAMED 被触发,
      • 当实现支持功能“MutationNameEvents”时,此方法中涉及的每个变异操作都会触发相应的事件,最后事件 { http://www.w3.org/2001/xml-events , DOMElementNameChanged } 或 { http://www.w3.org/2001/xml-events , DOMAttributeNameChanged } 被触发。
      参数:
      n - 要重命名的节点。
      namespaceURI - 新的命名空间 URI。
      qualifiedName - 新的限定名称。
      返回:
      重命名的节点。这是指定节点或为替换指定节点而创建的新节点。
      抛出:
      DOMException - NOT_SUPPORTED_ERR:当指定节点的类型既不是 ELEMENT_NODE 也不是 ATTRIBUTE_NODE 时引发,或者如果实现不支持文档元素的重命名。
      INVALID_CHARACTER_ERR:根据 Document.xmlVersion 属性中指定的使用中的 XML 版本,如果新的限定名称不是 XML 名称,则引发。
      WRONG_DOCUMENT_ERR:当指定节点是从与本文档不同的文档创建时引发的。
      namespace_err:如果_N54156_是一个畸形的合格名称,则提出,如果_N54156_有前缀,并且_N53577_是_N2456_,或者_N54156_,或者_N54156_具有“ XML”的前缀,并且是VariableDeclaratorList:n516的前缀。 _]。此外,当被重命名的节点是一个属性时,如果 qualifiedName 或其前缀是“xmlns”并且 namespaceURI 不同于“http://www.w3.org/2000/xmlns/”。
      自从:
      1.5,DOM 级别 3