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 节点。