public interface Document
Document 接口表示整个 HTML 或 XML 文档。从概念上讲,它是文档树的根,并提供对文档数据的基本访问。
因为元素、文本节点、注释、处理指令等不能存在于 Document 的上下文之外,所以 Document 接口还包含所需的创建这些对象的工厂方法。所创建的 Node 对象具有 ownerDocument 属性,该属性将 Node 对象与创建这些对象时的上下文所属的 Document 关联起来。
另请参见 Document Object Model (DOM) Level 3 Core Specification。
| 字段摘要 |
|---|
| 方法摘要 | |
|---|---|
Node |
adoptNode(Node source) 试图把另一文档中的节点采用到此文档。 |
Attr |
createAttribute(String name) 创建给定名称的 Attr。 |
Attr |
createAttributeNS(String namespaceURI, String qualifiedName) 创建给定的限定名称和名称空间 URI 的属性。 |
CDATASection |
createCDATASection(String data) 创建其值为指定字符串的 CDATASection 节点。 |
Comment |
createComment(String data) 创建给定指定字符串的 Comment 节点。 |
DocumentFragment |
createDocumentFragment() 创建空 DocumentFragment 对象。 |
Element |
createElement(String tagName) 创建指定类型的元素。 |
Element |
createElementNS(String namespaceURI, String qualifiedName) 创建给定的限定名称和名称空间 URI 的元素。 |
EntityReference |
createEntityReference(String name) 创建 EntityReference 对象。 |
ProcessingInstruction |
createProcessingInstruction(String target, String data) 创建给定指定名称和数据字符串的 ProcessingInstruction 节点。 |
Text |
createTextNode(String data) 创建给定指定字符串的 Text 节点。 |
DocumentType |
getDoctype() 与此文档相关的文档类型声明(参见 DocumentType)。 |
Element |
getDocumentElement() 这是一种便捷属性,该属性允许直接访问文档的文档元素的子节点。 |
String |
getDocumentURI() 文档的位置,如果未定义或 Document 是使用 DOMImplementation.createDocument 创建的,则为 null。 |
DOMConfiguration |
getDomConfig() 调用 Document.normalizeDocument() 时使用的配置。 |
Element |
getElementById(String elementId) 返回具有带给定值的 ID 属性的 Element。 |
NodeList |
getElementsByTagName(String tagname) 按文档顺序返回包含在文档中且具有给定标记名称的所有 Element 的 NodeList。 |
NodeList |
getElementsByTagNameNS(String namespaceURI, String localName) 以文档顺序返回具有给定本地名称和名称空间 URI 的所有 Elements 的 NodeList。 |
DOMImplementation |
getImplementation() 处理此文档的 DOMImplementation 对象。 |
String |
getInputEncoding() 指定解析时此文档使用的编码的属性。 |
boolean |
getStrictErrorChecking() 指定是否强制执行错误检查的属性。 |
String |
getXmlEncoding() 作为 XML 声明的一部分,指定此文档编码的属性。 |
boolean |
getXmlStandalone() 作为 XML 声明的一部分,指定此文档是否为独立文档的属性。 |
String |
getXmlVersion() 作为 XML 声明 的一部分指定此文档版本号的属性。 |
Node |
importNode(Node importedNode, boolean deep) 从另一文档向此文档导入节点,而不改变或移除原始文档中的源节点;此方法创建源节点的一个新副本。 |
void |
normalizeDocument() 此方法的行为如同使文档通过一个保存和加载的过程,而将其置为 "normal(标准)" 形式。 |
Node |
renameNode(Node n, String namespaceURI, String qualifiedName) 重命名 ELEMENT_NODE 或 ATTRIBUTE_NODE 类型的现有节点。 |
void |
setDocumentURI(String documentURI) 文档的位置,如果未定义或 Document 是使用 DOMImplementation.createDocument 创建的,则为 null。 |
void |
setStrictErrorChecking(boolean strictErrorChecking) 指定是否强制执行错误检查的属性。 |
void |
setXmlStandalone(boolean xmlStandalone) 作为 XML 声明 的一部分指定此文档是否是单独的的属性。 |
void |
setXmlVersion(String xmlVersion) 作为 XML 声明 的一部分指定此文档版本号的属性。 |
| 方法详细信息 |
|---|
DocumentType getDoctype()
DocumentType)。对于没有文档类型声明的 XML 文档,此方法返回
null。对于 HTML 文档,可以返回
DocumentType 对象,与 HTML 文档中是否有文档类型声明无关。
Document 的子节点
DocumentType 节点的直接访问。此节点可以在文档创建时设置,以后可以通过使用子节点操作方法(如
Node.insertBefore 或
Node.replaceChild)进行更改。不过要注意的是,根据创建时指定的
DocumentType,在有些实现可以实例化不同类型的
Document 对象(支持 "Core" 之外的其他功能,如 "HTML" [
DOM Level 2 HTML])时,以后对它的更改很可能会导致所支持功能的不可更改。
DOMImplementation getImplementation()
DOMImplementation 对象。DOM 应用程序可以使用多个实现中的对象。
Element getDocumentElement()
Element createElement(String tagName) throws DOMException
Element 接口,所以可以直接在返回的对象上指定属性。
Attr 节点,并将其连接到该元素。
createElementNS 方法。
tagName - 要实例化的元素类型名称。对于 XML,tagName 参数是区分大小写的;而对于其他文档,则取决于所使用标记语言的大小写敏感性。在该情况下,可通过 DOM 实现将该名称映射到该标记的规范形式。
Element 对象,该对象具有设置为
tagName 的
nodeName 属性以及设置为
null 的
localName、
prefix 和
namespaceURI。
DOMException - INVALID_CHARACTER_ERR:如果指定的名称是不遵循所使用的 XML 版本(在
Document.xmlVersion 属性中指定)的 XML 名称,则引发此异常。
DocumentFragment createDocumentFragment()
DocumentFragment 对象。
DocumentFragment。
Text createTextNode(String data)
Text 节点。
data - 该节点的数据。
Text 对象。
Comment createComment(String data)
Comment 节点。
data - 该节点的数据。
Comment 对象。
CDATASection createCDATASection(String data) throws DOMException
CDATASection 节点。
data -
CDATASection 内容的数据。
CDATASection 对象。
DOMException - NOT_SUPPORTED_ERR:如果此文档为 HTML 文档,则引发该异常。
ProcessingInstruction createProcessingInstruction(String target, String data) throws DOMException
ProcessingInstruction 节点。
target - 处理指令的目标部分。与
Document.createElementNS 或
Document.createAttributeNS 不同,此方法不检查目标名称是否为格式良好的名称空间。为了确保目标名称是格式良好的名称空间,应用程序应该使用设置为
true 的参数 "namespaces" 调用
Document.normalizeDocument()。
data - 该节点的数据。
ProcessingInstruction 对象。
DOMException - INVALID_CHARACTER_ERR:如果指定的目标是不遵循在
Document.xmlVersion 属性中指定的使用中的 XML 版本的 XML 名称,则引发此异常。
Attr createAttribute(String name) throws DOMException
Attr。注意,然后可以使用
setAttributeNode 方法在
Element 上设置
Attr。
createAttributeNS 方法。
name - 属性名称。
Attr 对象,该对象具有设置为
name 的
nodeName 属性以及设置为
null 的
localName、
prefix 和
namespaceURI。该属性的值为空字符串。
DOMException - INVALID_CHARACTER_ERR:如果指定的名称是不遵循在
Document.xmlVersion 属性中指定的使用中的 XML 版本的 XML 名称,则引发此异常。
EntityReference createEntityReference(String name) throws DOMException
EntityReference 对象。此外,如果引用的实体是已知的,则使
EntityReference 节点的子列表与相应
Entity 节点的子列表相同。
注: 如果任何 Entity 节点的后代具有未绑定的名称空间前缀,则相应的所创建的 EntityReference 节点的后代也未绑定;(其 namespaceURI 为 null)。DOM Level 2 和 3 不支持在此情况下解析名称空间前缀的任何机制。
name - 要引用的实体的名称。与
Document.createElementNS 或
Document.createAttributeNS 不同,不在实体名称上检查名称空间是否为格式良好的。为了确保实体名称是格式良好的名称空间,应用程序应该使用设置为
true 的参数 "namespaces" 调用
Document.normalizeDocument()。
EntityReference 对象。
DOMException - INVALID_CHARACTER_ERR:如果指定的名称是不遵循在
Document.xmlVersion 属性中指定的使用中的 XML 版本的 XML 名称,则引发此异常。
NodeList getElementsByTagName(String tagname)
Element 的
NodeList。
tagname - 要匹配的标记的名称。特殊值 "*" 匹配所有标记。对于 XML ,
tagname 参数是区分大小写的,否则它将依靠正在使用的标记语言的大小写敏感性。
Elements 的新
NodeList 对象。
Node importNode(Node importedNode, boolean deep) throws DOMException
parentNode 为
null)。
nodeName 和
nodeType,加上与名称空间相关的属性(
prefix、
localName 和
namespaceURI)。与在
cloneNode 操作中一样,源节点没有改变。与导入的节点相关的用户数据不可继续使用。不过,如果随相关数据一起指定了任何
UserDataHandlers,则将在此方法返回之前用适当的参数调用这些处理程序。
nodeType 复制,在从一个文档向另一文档复制 XML 或 HTML 源的分段时试图镜像所需的行为,并认识到两个方法可以在 XML 实例中具有不同的 DTD。下表描述了每种类型节点的细节。
Attr 上,将
ownerElement 属性设置为
null 并将
specified 标志设置为
true。递归地导入源
Attr 的后代,并且重新集合得到的节点来构造相应的子树。注意,
deep 参数对
Attr 节点无效;它们总是在导入时带着子节点。
deep 选项设置为
true,则递归地导入源
DocumentFragment 的后代,并在导入的
DocumentFragment 下重新集合得到的节点以构造相应的子树。否则,此操作仅生成一个空
DocumentFragment。
Document 节点。
DocumentType 节点。
Attr 节点连接到生成的
Element。默认属性是
不 被复制的,不过,如果被导入的文档定义了此元素名称的默认属性,则分配这些属性。如果将
importNode
deep 参数设置为
true,则递归地导入源元素的后代并集合得到的节点,以构造相应的子树。
Entity 节点,但在当前版本的 DOM 中,
DocumentType 是只读的。将考虑在以后版本的 DOM 中包含将这些导入的节点添加到
DocumentType 中这一功能。导入时,将复制
publicId、
systemId 和
notationName 属性。如果请求
deep 导入,则递归地导入源
Entity 的后代,并重新集合得到的节点以构造相应的子树。
deep 导入,也只复制
EntityReference 本身,因为源和目标文档可能以不同方式定义实体。如果正在导入的文档提供对此实体名称的定义,则它的值得以分配。
Notation 节点,但在当前版本的 DOM 中,
DocumentType 是只读的。能够将这些导入的节点添加到
DocumentType 将被认为是以后版本的 DOM 的附加功能。导入时,复制
publicId 和
systemId 属性。注意,
deep 参数对此类型的节点无效,因为它们不能有任何子节点。
target 和
data 值。注意,该
deep 参数对此类型的节点无效,因为它们不能有任何子节点。
CharacterData 的这三种类型的节点从源节点复制其
data 和
length 属性。注意,
deep 参数对这三种类型的节点无效,因为它们不能有任何子节点。
importedNode - 要导入的节点。
deep - 如果为
true,则递归地导入在指定节点下的子树;如果为
false,则仅导入节点本身,如上面的解释。这对不能有任何子节点的节点、对
Attr 和
EntityReference 节点都无效。
Document 的节点。
DOMException - NOT_SUPPORTED_ERR:如果不支持正在导入的该类型的节点,则引发此异常。
Document.xmlVersion 属性中指定的使用中的 XML 版本的 XML 名称,则引发此异常。例如,将 XML 1.1 [
XML 1.1] 元素导入 XML 1.0 文档时可能引发此异常。
Element createElementNS(String namespaceURI, String qualifiedName) throws DOMException
null 作为方法的 namespaceURI 参数的值。
namespaceURI - 要创建的元素的名称空间 URI。
qualifiedName - 要实例化的元素类型的限定名称。
Element 对象:
| 属性 | 值 |
|---|---|
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 名称,则引发此异常。
qualifiedName 是错误格式的限制名称;如果
qualifiedName 具有前缀且
namespaceURI 为
null;或者如果
qualifiedName 具有前缀 "xml" 且该
namespaceURI 不同于 "
http://www.w3.org/XML/1998/namespace" [
XML Namespaces];或者如果
qualifiedName 或其前缀为 "xmlns" 且该
namespaceURI 不同于 "
http://www.w3.org/2000/xmlns/";或者如果
namespaceURI 为 "
http://www.w3.org/2000/xmlns/" 且
qualifiedName 及其前缀都不是 "xmlns"。
"XML" 特性,则总是抛出此异常。
Attr createAttributeNS(String namespaceURI, String qualifiedName) throws DOMException
null 作为方法的
namespaceURI 参数的值。
namespaceURI - 要创建的属性的名称空间 URI。
qualifiedName - 要实例化的属性的限定名称。
Attr 对象:
| 属性 | 值 |
|---|---|
Node.nodeName |
qualifiedName |
Node.namespaceURI |
namespaceURI |
Node.prefix |
前缀,从 qualifiedName 中提取的;如果没有前缀,则为 null |
Node.localName |
本地名称,从 qualifiedName 提取的 |
Attr.name |
qualifiedName |
Node.nodeValue |
空字符串 |
DOMException - INVALID_CHARACTER_ERR:如果指定的
qualifiedName 是不遵循在
Document.xmlVersion 属性中指定的使用中的 XML 版本的 XML 名称,则引发此异常。
qualifiedName 为错误格式的限定名称;如果
qualifiedName 有前缀且
namespaceURI 为
null;如果
qualifiedName 有前缀 "xml" 且
namespaceURI 不同于 "
http://www.w3.org/XML/1998/namespace";如果
qualifiedName 或其前缀为 "xmlns" 且
namespaceURI 不同于 "
http://www.w3.org/2000/xmlns/";或者
namespaceURI 为 "
http://www.w3.org/2000/xmlns/" 且
qualifiedName 及其前缀都不是 "xmlns"。
"XML" 特性,则总是抛出此异常。
NodeList getElementsByTagNameNS(String namespaceURI, String localName)
Elements 的
NodeList。
namespaceURI - 要匹配的元素的名称空间 URI。特殊值
"*" 匹配所有名称空间。
localName - 要匹配的元素的本地名称。特殊值 "*" 匹配所有本地名称。
Elements 的新
NodeList 对象。
Element getElementById(String elementId)
Element。如果不存在此类元素,则此方法返回
null。如果一个以上的元素具有带该值的 ID 属性,返回哪一个元素是不确定的。
Attr.isId 来确定属性是否属于类型 ID。
注: 具有名称 "ID" 或 "id" 的属性不属于类型 ID,除非这样定义。
elementId - 元素的唯一
id 值。
null。
String getInputEncoding()
Document 时),则为
null。
String getXmlEncoding()
Document 时,此属性为
null。
boolean getXmlStandalone()
false。
注: 设置此属性时不对此值进行任何验证。应用程序应该使用带有 "validate" 参数的 Document.normalizeDocument() 验证该值是否匹配在 [XML 1.0] 中定义的有关独立文档声明的有效性约束()。
void setXmlStandalone(boolean xmlStandalone)
throws DOMException
false。
注: 设置此属性时不对此值进行任何验证。应用程序应该使用带有 "validate" 参数的 Document.normalizeDocument() 验证该值是否匹配 validity constraint for standalone document declaration(在 [XML 1.0] 中定义)。
DOMException - NOT_SUPPORTED_ERR:如果此文档不支持 "XML" 特性,则引发此异常。
String getXmlVersion()
"1.0"。如果此文档不支持 "XML" 特性,则该值始终为
null。更改此属性将影响在 XML 名称中检查无效字符的方法。应用程序应该调用
Document.normalizeDocument() 来检查在已经是此
Document 一部分的
Node 中的无效字符。
DOMImplementation.hasFeature(feature, version) 方法来确定实现是否支持 [
XML 1.0]。DOM 应用程序还可以使用参数值分别为 "XMLVersion" 和 "1.1"的同一方法来确定实现是否支持 [
XML 1.1]。在这两种情况下,为了支持 XML,实现还必须支持在此规范中定义的 "XML" 特性。支持某版本的 "XMLVersion" 特性的
Document 对象不能在使用
Document.xmlVersion 时对相同版本号引发
NOT_SUPPORTED_ERR 异常。