public interface Node
该 Node
接口是整个文档对象模型的主要数据类型。它表示该文档树中的单个节点。当实现 Node
接口的所有对象公开处理子节点的方法时,不是实现 Node
接口的所有对象都有子节点。例如,Text
节点可能没有子节点,且将子节点添加到这样的节点将导致引发 DOMException
。
包括属性 nodeName
、nodeValue
和 attributes
作为一种获取节点信息的机制,无需向下强制转换为特定的派生接口。在没有对特定的 nodeType
(如 Element
的 nodeValue
或 Comment
的 attributes
)的属性的明显映射的情况下,这将返回 null
。注意,特定的接口可能包含其他更方便的机制来获取和设置相关信息。
nodeName
、nodeValue
和 attributes
的值将根据以下节点类型的不同而不同。
Interface | nodeName | nodeValue | attributes |
---|---|---|---|
Attr |
与 Attr.name 相同 |
与 Attr.value 相同 |
null |
CDATASection |
"#cdata-section" |
与 CharacterData.data 相同,CDATA 节的内容 |
null |
Comment |
"#comment" |
与 CharacterData.data 相同,该注释的内容 |
null |
Document |
"#document" |
null |
null |
DocumentFragment |
"#document-fragment" |
null |
null |
DocumentType |
与 DocumentType.name 相同 |
null |
null |
Element |
与 Element.tagName 相同 |
null |
NamedNodeMap |
Entity |
entity name | null |
null |
EntityReference |
引用的实体名称 | null |
null |
Notation |
notation name | null |
null |
ProcessingInstruction |
与 ProcessingInstruction.target 相同 |
与 ProcessingInstruction.data 相同 |
null |
Text |
"#text" |
与 CharacterData.data 相同,该文本节点的内容 |
null |
另请参见 Document Object Model (DOM) Level 3 Core Specification。
字段摘要 | |
---|---|
static short |
ATTRIBUTE_NODE 该节点为 Attr 。 |
static short |
CDATA_SECTION_NODE 该节点为 CDATASection 。 |
static short |
COMMENT_NODE 该节点为 Comment 。 |
static short |
DOCUMENT_FRAGMENT_NODE 该节点为 DocumentFragment 。 |
static short |
DOCUMENT_NODE 该节点为 Document 。 |
static short |
DOCUMENT_POSITION_CONTAINED_BY 引用节点包含该节点。 |
static short |
DOCUMENT_POSITION_CONTAINS 该节点包含引用节点。 |
static short |
DOCUMENT_POSITION_DISCONNECTED 两个节点断开连接。 |
static short |
DOCUMENT_POSITION_FOLLOWING 该节点在引用节点之后。 |
static short |
DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC 对前后位置的确定是特定于实现的。 |
static short |
DOCUMENT_POSITION_PRECEDING 第二个节点在引用节点之前。 |
static short |
DOCUMENT_TYPE_NODE 该节点为 DocumentType 。 |
static short |
ELEMENT_NODE 该节点为 Element 。 |
static short |
ENTITY_NODE 该节点为 Entity 。 |
static short |
ENTITY_REFERENCE_NODE 该节点为 EntityReference 。 |
static short |
NOTATION_NODE 该节点为 Notation 。 |
static short |
PROCESSING_INSTRUCTION_NODE 该节点为 ProcessingInstruction 。 |
static short |
TEXT_NODE 该节点为 Text 节点。 |
方法摘要 | |
---|---|
Node |
appendChild(Node newChild) 将节点 newChild 添加到此节点的子节点列表的末尾。 |
Node |
cloneNode(boolean deep) 返回此节点的副本,即允当节点的一般复制构造方法。 |
short |
compareDocumentPosition(Node other) 就节点在文档中的位置并按照文档的顺序,比较引用节点(即在其上调用此方法的节点)与作为参数传递的节点。 |
NamedNodeMap |
getAttributes() 包含此节点的属性的 NamedNodeMap (如果它是 Element );否则为 null 。 |
String |
getBaseURI() 此节点的绝对基 URI;如果实现不能获得绝对 URI,则为 null 。 |
NodeList |
getChildNodes() 包含此节点的所有子节点的 NodeList 。 |
Object |
getFeature(String feature, String version) 此方法返回一个特定的对象,该对象实现指定功能或版本的特定 API,如下所述。 |
Node |
getFirstChild() 此节点的第一个子节点。 |
Node |
getLastChild() 此节点的最后一个节点。 |
String |
getLocalName() 返回此节点限定名称的本地部分。 |
String |
getNamespaceURI() 此节点的名称空间 URI;如果它未被指定,则返回 null (参见)。 |
Node |
getNextSibling() 直接在此节点之后的节点。 |
String |
getNodeName() 此节点的名称,取决于其类型;参见上表。 |
short |
getNodeType() 表示基础对象的类型的节点,如上所述。 |
String |
getNodeValue() 此节点的值,取决于其类型;参见上表。 |
Document |
getOwnerDocument() 与此节点相关的 Document 对象。 |
Node |
getParentNode() 此节点的父节点。 |
String |
getPrefix() 此节点的名称空间前缀;如果它未被指定,则为 null 。 |
Node |
getPreviousSibling() 直接在此节点之前的节点。 |
String |
getTextContent() 此属性返回此节点及其后代的文本内容。 |
Object |
getUserData(String key) 检索与此节点上的某个键相关联的对象。 |
boolean |
hasAttributes() 返回此节点(如果它是一个元素)是否具有任何属性。 |
boolean |
hasChildNodes() 返回此节点是否具有任何子节点。 |
Node |
insertBefore(Node newChild, Node refChild) 在现有子节点 refChild 之前插入节点 newChild 。 |
boolean |
isDefaultNamespace(String namespaceURI) 此方法检查指定的 namespaceURI 是否是默认名称空间。 |
boolean |
isEqualNode(Node arg) 测试两个节点是否相等。 |
boolean |
isSameNode(Node other) 返回此节点是否是与给定节点相同的节点。 |
boolean |
isSupported(String feature, String version) 测试 DOM 实现是否实现特定功能,且该功能是否受此节点支持,如下所述。 |
String |
lookupNamespaceURI(String prefix) 从此节点开始,查找与给定前缀相关的名称空间 URI。 |
String |
lookupPrefix(String namespaceURI) 从此节点开始,查找与给定名称空间 URI 相关的前缀。 |
void |
normalize() 将此 Node 之下完整的深层子树中所有 Text 节点(包括属性节点)放入只有结构(如元素、注释、处理指令、CDATA 节和实体引用)分隔 Text 节点的“常规”形式,也就是说,既没有相邻的 Text 节点,也没有空 Text 节点。 |
Node |
removeChild(Node oldChild) 从子节点列表中移除 oldChild 所指示的子节点,并将其返回。 |
Node |
replaceChild(Node newChild, Node oldChild) 将子节点列表中的子节点 oldChild 替换为 newChild ,并返回 oldChild 节点。 |
void |
setNodeValue(String nodeValue) 此节点的值,取决于其类型;参见上表。 |
void |
setPrefix(String prefix) 此节点的名称空间前缀;如果未指定,则为 null 。 |
void |
setTextContent(String textContent) 此属性返回此节点及其后代的文本内容。 |
Object |
setUserData(String key, Object data, UserDataHandler handler) 将对象与此节点上的键相关联。 |
字段详细信息 |
---|
static final short ELEMENT_NODE
Element
。
static final short ATTRIBUTE_NODE
Attr
。
static final short TEXT_NODE
Text
节点。
static final short CDATA_SECTION_NODE
CDATASection
。
static final short ENTITY_REFERENCE_NODE
EntityReference
。
static final short ENTITY_NODE
Entity
。
static final short PROCESSING_INSTRUCTION_NODE
ProcessingInstruction
。
static final short COMMENT_NODE
Comment
。
static final short DOCUMENT_NODE
Document
。
static final short DOCUMENT_TYPE_NODE
DocumentType
。
static final short DOCUMENT_FRAGMENT_NODE
DocumentFragment
。
static final short NOTATION_NODE
Notation
。
static final short DOCUMENT_POSITION_DISCONNECTED
static final short DOCUMENT_POSITION_PRECEDING
static final short DOCUMENT_POSITION_FOLLOWING
static final short DOCUMENT_POSITION_CONTAINS
static final short DOCUMENT_POSITION_CONTAINED_BY
static final short DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC
方法详细信息 |
---|
String getNodeName()
String getNodeValue() throws DOMException
null
时,设置它无效,包括节点为只读的情况。
DOMException
- DOMSTRING_SIZE_ERR: 在它返回的字符多于实现平台上
DOMString
变量中适合的字符时引发此异常。
void setNodeValue(String nodeValue) throws DOMException
null
时,设置它无效,包括节点为只读的情况。
DOMException
- NO_MODIFICATION_ALLOWED_ERR: 当节点为只读且未将它定义为
null
时引发此异常。
short getNodeType()
Node getParentNode()
Attr
、
Document
、
DocumentFragment
、
Entity
和
Notation
)都可以有父节点。但是,如果刚创建节点且尚未添加到树,或如果已经从树中移除了它,此值为
null
。
NodeList getChildNodes()
NodeList
。如果不存在子节点,则这是不包含节点的
NodeList
。
Node getFirstChild()
null
。
Node getLastChild()
null
。
Node getPreviousSibling()
null
。
Node getNextSibling()
null
。
NamedNodeMap getAttributes()
NamedNodeMap
(如果它是
Element
);否则为
null
。
Document getOwnerDocument()
Document
对象。这也是用于创建新节点的
Document
对象。当此节点为
Document
或未与任何
Document
一起使用的
DocumentType
时,返回
null
。
Node insertBefore(Node newChild, Node refChild) throws DOMException
refChild
之前插入节点
newChild
。如果
refChild
为
null
,则将
newChild
插入到子节点列表的末尾。
newChild
为
DocumentFragment
对象,则以同样的顺序将其所有节点插入
refChild
之前。如果
newChild
已经存在于树中,则首先移除它。
注:将一个节点插入本身之前与实现有关。
newChild
- 要插入的节点。
refChild
- 引用节点,即必须在其前插入新节点的节点。
DOMException
- HIERARCHY_REQUEST_ERR:在以下情况下引发此异常:如果此节点为不允许
newChild
节点类型的子节点的类型;或者如果要插入的节点为此节点的一个祖先或此节点本身;或者如果此节点为
Document
类型且 DOM 应用程序试图插入第二个
DocumentType
或
Element
节点。
newChild
是从不同的文档创建的,不是从创建此节点的文档创建的,则引发此异常。
refChild
不是此节点的子节点。
Document
类型,如果 DOM 实现不支持插入
DocumentType
或
Element
节点,则可能引发此异常。
Node replaceChild(Node newChild, Node oldChild) throws DOMException
oldChild
替换为
newChild
,并返回
oldChild
节点。
newChild
为
DocumentFragment
对象,则将
oldChild
替换为所有
DocumentFragment
子节点,它们都以相同的顺序插入。如果
newChild
已经存在于树中,则首先移除它。
注:将节点替换为它本身与实现有关。
newChild
- 要在子节点列表中放入的新节点。
oldChild
- 列表中被替换的节点。
DOMException
- HIERARCHY_REQUEST_ERR: 在以下情况下引发此异常:如果此节点为不允许
newChild
节点类型的子节点的类型;或者如果要放入的节点为此节点的一个祖先或此节点本身;或者如果此节点为
Document
类型且替换操作的结果将第二个
DocumentType
或
Element
添加到
Document
上。
newChild
是从不同的文档创建的,不是从创建此节点的文档创建的,则引发此异常。
oldChild
不是此节点的子节点,则引发此异常。
Document
类型,则如果 DOM 实现不支持替换
DocumentType
子节点或
Element
子节点,则可能引发此异常。
Node removeChild(Node oldChild) throws DOMException
oldChild
所指示的子节点,并将其返回。
oldChild
- 移除的节点。
DOMException
- NO_MODIFICATION_ALLOWED_ERR: 如果此节点为只读的,则引发此异常。
oldChild
不是此节点的子节点。
Document
类型,则如果 DOM 实现不支持移除
DocumentType
子节点或
Element
子节点,则可能引发此异常。
Node appendChild(Node newChild) throws DOMException
newChild
添加到此节点的子节点列表的末尾。如果
newChild
已经存在于树中,则首先移除它。
newChild
- 要添加的节点。如果它是
DocumentFragment
对象,则将文档片段的整个内容移动到此节点的子列表中
DOMException
- HIERARCHY_REQUEST_ERR: 在以下情况下引发此异常:如果此节点为不允许
newChild
节点类型的子节点的类型;或者如果要追加的节点为此节点的一个祖先或此节点本身;或者如果此节点为
Document
类型且 DOM 应用程序试图追加第二个
DocumentType
或
Element
节点。
newChild
是从不同的文档创建的,不是从创建此节点的文档创建的,则引发此异常。
newChild
节点为
Document
节点的子节点,则如果 DOM 实现不支持移除
DocumentType
子节点或
Element
子节点,则可能引发此异常。
boolean hasChildNodes()
true
;否则返回
false
。
Node cloneNode(boolean deep)
parentNode
为
null
),且没有用户数据。与导入的节点相关的用户数据不携带过来。但是,如果随相关数据一起指定了任何
UserDataHandlers
,则将在此方法返回之前用适当的参数调用这些处理程序。
Element
将复制所有属性及其值,包括由 XML 处理器生成的用来表示默认属性的那些属性和值,但此方法不复制它包含的任何子节点,除非它是一个深层克隆。这包括此
Element
所包含的文本,因为该文本包含在子
Text
节点中。直接克隆
Attr
(相对于作为
Element
克隆操作的一部分进行的克隆)将返回指定的属性(
specified
为
true
)。克隆一个
Attr
总是要克隆其子节点,因为它们表示其值,不管这是否是深层克隆。如果相应的
Entity
可用,则克隆
EntityReference
将自动构造其子树,不管这是否是深层克隆。克隆任何其他类型的节点只返回此节点的副本。
EntityReference
克隆的子节点应为只读的。此外,还要指定未指定的
Attr
节点的克隆。并且,克隆
Document
、
DocumentType
、
Entity
和
Notation
节点与实现有关。
deep
- 如果为
true
,则在指定节点下递归式克隆子树;如果为
false
,则仅克隆节点本身(及其属性,如果它是
Element
)。
void normalize()
Node
之下完整的深层子树中所有
Text
节点(包括属性节点)放入只有结构(如元素、注释、处理指令、CDATA 节和实体引用)分隔
Text
节点的“常规”形式,也就是说,既没有相邻的
Text
节点,也没有空
Text
节点。这可以用于确保一个文档的 DOM 视图相同,好像它是保存和重新加载的一样,并且在使用依赖特定文档树结构的操作(如 XPointer [
XPointer] 查询)时此方法非常有用。如果连接到
Node.ownerDocument
的
DOMConfiguration
对象的参数 "normalize-characters" 为
true
,则此方法还将完全标准化
Text
节点的字符。
注:在文档包含 CDATASections
的情况下,单独的标准化操作可能不充分,因为 XPointer 不区分 Text
节点和 CDATASection
节点。