- 所有父级接口:
Node
- 所有已知的子接口:
HTMLDocument
Document
接口表示整个 HTML 或 XML 文档。从概念上讲,它是文档树的根,并提供对文档数据的主要访问。
由于元素、文本节点、注释、处理指令等不能存在于 Document
上下文之外,因此 Document
接口还包含创建这些对象所需的工厂方法。创建的 Node
对象具有 ownerDocument
属性,该属性将它们与创建它们的上下文中的 Document
相关联。
-
字段摘要
在接口 org.w3c.dom.Node 中声明的字段
ATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_POSITION_CONTAINED_BY, DOCUMENT_POSITION_CONTAINS, DOCUMENT_POSITION_DISCONNECTED, DOCUMENT_POSITION_FOLLOWING, DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC, DOCUMENT_POSITION_PRECEDING, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE
-
方法总结
修饰符和类型方法描述尝试将另一个文档中的节点采用到该文档中。createAttribute
(String name) 创建给定名称的Attr
。createAttributeNS
(String namespaceURI, String qualifiedName) 创建给定限定名称和命名空间 URI 的属性。createCDATASection
(String data) 创建一个值为指定字符串的CDATASection
节点。createComment
(String data) 在给定指定字符串的情况下创建一个Comment
节点。创建一个空的DocumentFragment
对象。createElement
(String tagName) 创建指定类型的元素。createElementNS
(String namespaceURI, String qualifiedName) 创建给定限定名称和命名空间 URI 的元素。createEntityReference
(String name) 创建一个EntityReference
对象。createProcessingInstruction
(String target, String data) 根据指定的名称和数据字符串创建一个ProcessingInstruction
节点。createTextNode
(String data) 在给定指定字符串的情况下创建一个Text
节点。与本文档相关的文档类型声明(参见DocumentType
)。这是一个方便的属性,允许直接访问作为文档的文档元素的子节点。文档的位置或null
如果未定义或如果Document
是使用DOMImplementation.createDocument
创建的。调用Document.normalizeDocument()
时使用的配置。getElementById
(String elementId) 返回具有给定值的 ID 属性的Element
。getElementsByTagName
(String tagname) 按文档顺序返回具有给定标签名称并包含在文档中的所有Elements
的NodeList
。getElementsByTagNameNS
(String namespaceURI, String localName) 按文档顺序返回具有给定本地名称和命名空间 URI 的所有Elements
的NodeList
。处理此文档的DOMImplementation
对象。指定解析时此文档使用的编码的属性。boolean
指定是否强制执行错误检查的属性。作为 声明 的一部分,指定此文档编码的属性。boolean
作为 声明 的一部分,指定此文档是否独立的属性。作为 声明 的一部分,指定本文档版本号的属性。importNode
(Node importedNode, boolean deep) 将节点从另一个文档导入到此文档,而不更改或删除原始文档中的源节点;此方法创建源节点的新副本。void
此方法的作用就好像文档正在经历一个保存和加载循环,将文档置于“正常”形式。renameNode
(Node n, String namespaceURI, String qualifiedName) 重命名类型为ELEMENT_NODE
或ATTRIBUTE_NODE
的现有节点。void
setDocumentURI
(String documentURI) 文档的位置或null
如果未定义或如果Document
是使用DOMImplementation.createDocument
创建的。void
setStrictErrorChecking
(boolean strictErrorChecking) 指定是否强制执行错误检查的属性。void
setXmlStandalone
(boolean xmlStandalone) 作为 声明 的一部分,指定此文档是否独立的属性。void
setXmlVersion
(String xmlVersion) 作为 声明 的一部分,指定本文档版本号的属性。在接口 org.w3c.dom.Node 中声明的方法
appendChild, cloneNode, compareDocumentPosition, getAttributes, getBaseURI, getChildNodes, getFeature, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getOwnerDocument, getParentNode, getPrefix, getPreviousSibling, getTextContent, getUserData, hasAttributes, hasChildNodes, insertBefore, isDefaultNamespace, isEqualNode, isSameNode, isSupported, lookupNamespaceURI, lookupPrefix, normalize, removeChild, replaceChild, setNodeValue, setPrefix, setTextContent, setUserData
-
方法详情
-
getDoctype
DocumentType getDoctype()与本文档相关的文档类型声明(参见DocumentType
)。对于没有文档类型声明的 XML 文档,它返回null
。对于 HTML 文档,可以返回一个DocumentType
对象,与 HTML 文档中是否存在文档类型声明无关。
这提供了直接访问DocumentType
节点,这个Document
的子节点。此节点可以在文档创建时设置,然后通过使用子节点操作方法(例如Node.insertBefore
或Node.replaceChild
)进行更改。但是请注意,虽然某些实现可能会根据创建时指定的DocumentType
实例化不同类型的Document
对象,以支持除“核心”之外的其他功能,例如“HTML” [DOM 2 级 HTML ] ,但之后更改它的可能性很小在更改支持的功能时。- 自从:
- 1.4、DOM Level 3
-
getImplementation
DOMImplementation getImplementation()处理此文档的DOMImplementation
对象。一个 DOM 应用程序可以使用来自多个实现的对象。 -
getDocumentElement
Element getDocumentElement()这是一个方便的属性,允许直接访问作为文档的文档元素的子节点。 -
createElement
创建指定类型的元素。请注意,返回的实例实现了Element
接口,因此可以直接在返回的对象上指定属性。
此外,如果存在具有默认值的已知属性,则会自动创建表示它们的Attr
个节点并将其附加到元素。
要创建具有限定名称和命名空间 URI 的元素,请使用createElementNS
方法。- 参数:
tagName
- 要实例化的元素类型的名称。对于 XML,这是区分大小写的,否则取决于所使用的标记语言的大小写敏感度。在这种情况下,名称会通过 DOM 实现映射到该标记的规范形式。- 返回:
-
一个新的
Element
对象,其nodeName
属性设置为tagName
,localName
、prefix
和namespaceURI
设置为null
。 - 抛出:
DOMException
- INVALID_CHARACTER_ERR:如果指定的名称不是根据Document.xmlVersion
属性中指定的使用中的 XML 版本的 XML 名称,则引发。
-
createDocumentFragment
DocumentFragment createDocumentFragment()创建一个空的DocumentFragment
对象。- 返回:
-
一个新的
DocumentFragment
。
-
createTextNode
在给定指定字符串的情况下创建一个Text
节点。- 参数:
data
- 节点的数据。- 返回:
-
新的
Text
对象。
-
createComment
在给定指定字符串的情况下创建一个Comment
节点。- 参数:
data
- 节点的数据。- 返回:
-
新的
Comment
对象。
-
createCDATASection
创建一个值为指定字符串的CDATASection
节点。- 参数:
data
-CDATASection
内容的数据。- 返回:
-
新的
CDATASection
对象。 - 抛出:
DOMException
- NOT_SUPPORTED_ERR:如果此文档是 HTML 文档则引发。
-
createProcessingInstruction
根据指定的名称和数据字符串创建一个ProcessingInstruction
节点。- 参数:
target
- 处理指令的目标部分。与Document.createElementNS
或Document.createAttributeNS
不同,没有对目标名称进行名称空间格式正确的检查。应用程序应调用Document.normalizeDocument()
并将参数“命名空间”设置为true
,以确保目标名称的命名空间格式正确。data
- 节点的数据。- 返回:
-
新的
ProcessingInstruction
对象。 - 抛出:
DOMException
- INVALID_CHARACTER_ERR:如果指定的目标不是根据Document.xmlVersion
属性中指定的使用中的 XML 版本的 XML 名称,则引发。
NOT_SUPPORTED_ERR:如果此文档是 HTML 文档则引发。
-
createAttribute
创建给定名称的Attr
。请注意,然后可以使用setAttributeNode
方法在Element
上设置Attr
实例。
要创建具有限定名称和命名空间 URI 的属性,请使用createAttributeNS
方法。- 参数:
name
- 属性的名称。- 返回:
-
一个新的
Attr
对象,其nodeName
属性设置为name
,localName
、prefix
和namespaceURI
设置为null
。该属性的值为空字符串。 - 抛出:
DOMException
- INVALID_CHARACTER_ERR:如果指定的名称不是根据Document.xmlVersion
属性中指定的使用中的 XML 版本的 XML 名称,则引发。
-
createEntityReference
创建一个EntityReference
对象。此外,如果引用的实体已知,EntityReference
节点的子列表将与对应的Entity
节点的子列表相同。笔记:如果
Entity
节点的任何后代具有未绑定的命名空间前缀,则创建的EntityReference
节点的相应后代也未绑定; (它的namespaceURI
是null
)。在这种情况下,DOM 级别 2 和 3 不支持任何解析名称空间前缀的机制。- 参数:
name
- 要引用的实体的名称。与Document.createElementNS
或Document.createAttributeNS
不同,不会对实体名称进行名称空间格式正确的检查。应用程序应调用Document.normalizeDocument()
并将参数“命名空间”设置为true
,以确保实体名称的命名空间格式正确。- 返回:
-
新的
EntityReference
对象。 - 抛出:
DOMException
- INVALID_CHARACTER_ERR:如果指定的名称不是根据Document.xmlVersion
属性中指定的使用中的 XML 版本的 XML 名称,则引发。
NOT_SUPPORTED_ERR:如果此文档是 HTML 文档则引发。
-
getElementsByTagName
按文档顺序返回具有给定标签名称并包含在文档中的所有Elements
的NodeList
。- 参数:
tagname
- 要匹配的标签的名称。特殊值“*”匹配所有标签。对于XML,tagname
参数是区分大小写的,否则取决于所使用的标记语言的大小写敏感度。- 返回:
-
包含所有匹配的
Elements
的新NodeList
对象。
-
importNode
将节点从另一个文档导入到此文档,而不更改或删除原始文档中的源节点;此方法创建源节点的新副本。返回的节点没有父节点; (parentNode
是null
)。
对于所有节点,导入节点会创建导入文档拥有的节点对象,其属性值与源节点的nodeName
和nodeType
相同,加上与名称空间相关的属性(prefix
、localName
和namespaceURI
)。与cloneNode
操作一样,源节点没有改变。与导入节点关联的用户数据不会被保留。但是,如果已指定任何UserDataHandlers
以及关联的数据,将在该方法返回之前使用适当的参数调用这些处理程序。
附加信息被适当地复制到nodeType
,试图反映如果将 XML 或 HTML 源片段从一个文档复制到另一个文档时预期的行为,认识到这两个文档在 XML 情况下可能具有不同的 DTD。以下列表描述了每种类型节点的细节。- ATTRIBUTE_NODE
-
在生成的
Attr
上,ownerElement
属性设置为null
,specified
标志设置为true
。递归导入源Attr
的后代,并重新组合生成的节点以形成相应的子树。注意deep
参数对Attr
节点没有影响;进口时,他们总是带着孩子。 - DOCUMENT_FRAGMENT_NODE
-
如果
deep
选项设置为true
,则递归导入源DocumentFragment
的后代,并在导入的DocumentFragment
下重新组装生成的节点以形成相应的子树。否则,这只会生成一个空的DocumentFragment
。 - DOCUMENT_NODE
Document
节点无法导入。- DOCUMENT_TYPE_NODE
DocumentType
节点无法导入。- ELEMENT_NODE
-
源元素的 Specified 属性节点被导入,生成的
Attr
节点附加到生成的Element
。 not 复制了默认属性,但如果要导入的文档定义了此元素名称的默认属性,则会分配这些属性。如果importNode
deep
参数设置为true
,则递归导入源元素的后代,并重新组合生成的节点以形成相应的子树。 - ENTITY_NODE
Entity
节点可以导入,但是在当前版本的 DOM 中,DocumentType
是只读的。将这些导入的节点添加到DocumentType
的能力将被考虑添加到 DOM 的未来版本中。导入时,将复制publicId
、systemId
和notationName
属性。如果请求deep
导入,则递归导入源Entity
的后代,并重新组装生成的节点以形成相应的子树。- ENTITY_REFERENCE_NODE
-
只有
EntityReference
本身被复制,即使请求deep
导入,因为源文档和目标文档可能对实体的定义不同。如果要导入的文档为此实体名称提供了定义,则会分配其值。 - NOTATION_NODE
Notation
节点可以导入,但是在当前版本的 DOM 中,DocumentType
是只读的。将这些导入的节点添加到DocumentType
的能力将被考虑添加到 DOM 的未来版本中。导入时,将复制publicId
和systemId
属性。请注意,deep
参数对此类节点没有影响,因为它们不能有任何子节点。- PROCESSING_INSTRUCTION_NODE
-
导入的节点从源节点复制其
target
和data
值。请注意,deep
参数对此类节点没有影响,因为它们不能有任何子节点。 - TEXT_NODE, CDATA_SECTION_NODE, COMMENT_NODE
-
这三种类型的节点继承自
CharacterData
从源节点复制它们的data
和length
属性。请注意,deep
参数对这些类型的节点没有影响,因为它们不能有任何子节点。
- 参数:
importedNode
- 要导入的节点。deep
- 如果是true
,则递归导入指定节点下的子树;如果是false
,只导入节点本身,如上所述。这对不能有任何子节点的节点以及Attr
和EntityReference
节点没有影响。- 返回:
-
属于此
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
- 参数:
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
有前缀且namespaceURI
是null
,或者如果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
- 参数:
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
,如果qualifiedName
的qualifiedName
具有“ 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
按文档顺序返回具有给定本地名称和命名空间 URI 的所有Elements
的NodeList
。- 参数:
namespaceURI
- 要匹配的元素的名称空间 URI。特殊值"*"
匹配所有命名空间。localName
- 要匹配的元素的本地名称。特殊值“*”匹配所有本地名称。- 返回:
-
包含所有匹配的
Elements
的新NodeList
对象。 - 自从:
- 1.4、DOM Level 2
-
getElementById
返回具有给定值的 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()- 自从:
- 1.5,DOM 级别 3
-
getXmlStandalone
boolean getXmlStandalone()作为 声明 的一部分,指定此文档是否独立的属性。未指定时为false
。笔记:设置此属性时不对值进行验证。应用程序应将
Document.normalizeDocument()
与“验证”参数一起使用,以验证该值是否与 [XML 1.0] 中定义的 独立文档声明的有效性约束 匹配。- 自从:
- 1.5,DOM 级别 3
-
setXmlStandalone
作为 声明 的一部分,指定此文档是否独立的属性。未指定时为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
作为 声明 的一部分,指定本文档版本号的属性。如果没有声明并且此文档支持“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
文档的位置或null
如果未定义或如果Document
是使用DOMImplementation.createDocument
创建的。设置该属性时不进行词法检查;这可能会导致在使用Node.baseURI
时返回null
值。
请注意,当Document
支持功能“HTML” [DOM 2 级 HTML ] 时,HTML BASE 元素的 href 属性在计算Node.baseURI
时优先于此属性。- 自从:
- 1.5,DOM 级别 3
-
adoptNode
尝试将另一个文档中的节点采用到该文档中。如果支持,它会更改源节点的ownerDocument
、它的子节点以及附加的属性节点(如果有的话)。如果源节点有父节点,则首先将其从其父节点的子列表中删除。这有效地允许将子树从一个文档移动到另一个文档(不像importNode()
创建源节点的副本而不是移动它)。当它失败时,应用程序应该改用Document.importNode()
。请注意,如果采用的节点已经是该文档的一部分(即源文档和目标文档相同),此方法仍然具有将源节点从其父节点的子列表中删除的效果(如果有的话)。以下列表描述了每种类型节点的细节。- ATTRIBUTE_NODE
-
在采用的
Attr
上,ownerElement
属性设置为null
,specified
标志设置为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:如果源节点的类型为DOCUMENT
,DOCUMENT_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_ERROR
或DOMError.SEVERITY_WARNING
)与“error-handler”参数关联的对象。请注意,如果实现无法从错误中恢复,此方法也可能会报告致命错误 (DOMError.SEVERITY_FATAL_ERROR
)。- 自从:
- 1.5,DOM 级别 3
-
renameNode
重命名类型为ELEMENT_NODE
或ATTRIBUTE_NODE
的现有节点。
如果可能,这只会更改给定节点的名称,否则会创建一个具有指定名称的新节点,并用新节点替换现有节点,如下所述。
如果无法简单地更改给定节点的名称,则执行以下操作:创建新节点,在新节点上注册任何已注册的事件监听器,从该节点删除附加到旧节点的任何用户数据,如果旧节点有父节点,则从其父节点中删除旧节点,将子节点移动到新节点,如果重命名节点是Element
,则将其属性移动到新节点,将新节点插入到旧节点使用的位置如果它有一个在其父节点的子节点列表中,则将附加到旧节点的用户数据附加到新节点。
当被重命名的节点是Element
时,仅移动指定的属性,根据新元素名称更新源自 DTD 的默认属性。此外,该实现可能会更新其他模式的默认属性。应用程序应该使用Document.normalizeDocument()
来保证这些属性是最新的。
当被重命名的节点是附加到Element
的Attr
时,该节点首先从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
- 用户数据事件
-