com.google.gwt.dom.client

## Class Node

- java.lang.Object
- - com.google.gwt.core.client.JavaScriptObject
  - - com.google.gwt.dom.client.Node

Direct Known Subclasses:
  Document, Element, Text

    public class Node
    extends JavaScriptObject

The Node interface is the primary datatype for the entire Document Object Model. It represents a single node in the document tree. While all objects implementing the Node interface expose methods for dealing with children, not all objects implementing the Node interface may have children.

### Field Summary

Fields
`static short` `DOCUMENT_NODE` The node is a `Document`.
`static short` `ELEMENT_NODE` The node is an `Element`.
`static short` `TEXT_NODE` The node is a `Text` node.

### Constructor Summary

Constructors
`protected` `Node()`

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods
`<T extends Node> T` `appendChild(T newChild)` Adds the node newChild to the end of the list of children of this node.
`static Node` `as(JavaScriptObject o)` Assert that the given `JavaScriptObject` is a DOM node and automatically typecast it.
`Node` `cloneNode(boolean deep)` Returns a duplicate of this node, i.e., serves as a generic copy constructor for nodes.
`Node` `getChild(int index)` Gets the child node at the given index.
`int` `getChildCount()` Gets the number of child nodes contained within this node.
`NodeList<Node>` `getChildNodes()` A NodeList that contains all children of this node.
`Node` `getFirstChild()` The first child of this node.
`Node` `getLastChild()` The last child of this node.
`Node` `getNextSibling()` The node immediately following this node.
`java.lang.String` `getNodeName()` The name of this node, depending on its type; see the table above.
`short` `getNodeType()` A code representing the type of the underlying object, as defined above.
`java.lang.String` `getNodeValue()` The value of this node, depending on its type; see the table above.
`Document` `getOwnerDocument()` The Document object associated with this node.
`Element` `getParentElement()` Gets the parent element of this node.
`Node` `getParentNode()` The parent of this node.
`Node` `getPreviousSibling()` The node immediately preceding this node.
`boolean` `hasChildNodes()` Returns whether this node has any children.
`boolean` `hasParentElement()` Determines whether this node has a parent element.
`Node` `insertAfter(Node newChild, Node refChild)` Inserts the node newChild after the existing child node refChild.
`Node` `insertBefore(Node newChild, Node refChild)` Inserts the node newChild before the existing child node refChild.
`Node` `insertFirst(Node child)` Inserts the given child as the first child of this node.
`static boolean` `is(JavaScriptObject o)` Determines whether the given `JavaScriptObject` is a DOM node.
`boolean` `isOrHasChild(Node child)` Determine whether a node is equal to, or the child of, this node.
`Node` `removeAllChildren()` Remove all children of the node.
`Node` `removeChild(Node oldChild)` Removes the child node indicated by oldChild from the list of children, and returns it.
`void` `removeFromParent()` Removes this node from its parent node if it is attached to one.
`Node` `replaceChild(Node newChild, Node oldChild)` Replaces the child node oldChild with newChild in the list of children, and returns the oldChild node.
`void` `setNodeValue(java.lang.String nodeValue)` The value of this node, depending on its type; see the table above.

### Methods inherited from class com.google.gwt.core.client.JavaScriptObject

`cast, createArray, createArray, createFunction, createObject, equals, hashCode, toSource, toString`

### Methods inherited from class java.lang.Object

`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

### Field Detail

#### ELEMENT_NODE

    public static final short ELEMENT_NODE

The node is an `Element`.

See Also:
  Constant Field Values

#### TEXT_NODE

    public static final short TEXT_NODE

The node is a `Text` node.

See Also:
  Constant Field Values

#### DOCUMENT_NODE

    public static final short DOCUMENT_NODE

The node is a `Document`.

See Also:
  Constant Field Values

### Constructor Detail

#### Node

    protected Node()

### Method Detail

#### as

    public static Node as(JavaScriptObject o)

Assert that the given `JavaScriptObject` is a DOM node and automatically typecast it.

#### is

    public static boolean is(JavaScriptObject o)

Determines whether the given `JavaScriptObject` is a DOM node. A `null` object will cause this method to return `false`. The try catch is needed for the firefox permission error: "Permission denied to access property 'nodeType'"

#### appendChild

    public final <T extends Node> T appendChild(T newChild)

Adds the node newChild to the end of the list of children of this node. If the newChild is already in the tree, it is first removed.

Parameters:
  `newChild` - The node to add
Returns:
  The node added

#### cloneNode

    public final Node cloneNode(boolean deep)

Returns a duplicate of this node, i.e., serves as a generic copy constructor for nodes. The duplicate node has no parent; (parentNode is null.). Cloning an Element copies all attributes and their values, including those generated by the XML processor to represent defaulted attributes, but this method does not copy any text it contains unless it is a deep clone, since the text is contained in a child Text node. Cloning an Attribute directly, as opposed to be cloned as part of an Element cloning operation, returns a specified attribute (specified is true). Cloning any other type of node simply returns a copy of this node.

Parameters:
  `deep` - If true, recursively clone the subtree under the specified node; if false, clone only the node itself (and its attributes, if it is an `Element`)
Returns:
  The duplicate node

#### getChild

    public final Node getChild(int index)

Gets the child node at the given index.

Parameters:
  `index` - the index of the node to be retrieved
Returns:
  the child node at the given index

#### getChildCount

    public final int getChildCount()

Gets the number of child nodes contained within this node.

Returns:
  the number of child nodes

#### getChildNodes

    public final NodeList<Node> getChildNodes()

A NodeList that contains all children of this node. If there are no children, this is a NodeList containing no nodes.

#### getFirstChild

    public final Node getFirstChild()

The first child of this node. If there is no such node, this returns null.

#### getLastChild

    public final Node getLastChild()

The last child of this node. If there is no such node, this returns null.

#### getNextSibling

    public final Node getNextSibling()

The node immediately following this node. If there is no such node, this returns null.

#### getNodeName

    public final java.lang.String getNodeName()

The name of this node, depending on its type; see the table above.

#### getNodeType

    public final short getNodeType()

A code representing the type of the underlying object, as defined above.

#### getNodeValue

    public final java.lang.String getNodeValue()

The value of this node, depending on its type; see the table above. When it is defined to be null, setting it has no effect.

#### getOwnerDocument

    public final Document getOwnerDocument()

The Document object associated with this node. This is also the `Document` object used to create new nodes.

#### getParentElement

    public final Element getParentElement()

Gets the parent element of this node.

Returns:
  this node's parent element, or `null` if none exists

#### getParentNode

    public final Node getParentNode()

The parent of this node. All nodes except Document may have a parent. However, if a node has just been created and not yet added to the tree, or if it has been removed from the tree, this is null.

#### getPreviousSibling

    public final Node getPreviousSibling()

The node immediately preceding this node. If there is no such node, this returns null.

#### hasChildNodes

    public final boolean hasChildNodes()

Returns whether this node has any children.

#### hasParentElement

    public final boolean hasParentElement()

Determines whether this node has a parent element.

Returns:
  true if the node has a parent element

#### insertAfter

    public final Node insertAfter(Node newChild,
                                  Node refChild)

Inserts the node newChild after the existing child node refChild. If refChild is `null`, insert newChild at the end of the list of children.

Parameters:
  `newChild` - The node to insert
  `refChild` - The reference node (that is, the node after which the new node must be inserted), or `null`
Returns:
  The node being inserted

#### insertBefore

    public final Node insertBefore(Node newChild,
                                   Node refChild)

Inserts the node newChild before the existing child node refChild. If refChild is `null`, insert newChild at the end of the list of children.

Parameters:
  `newChild` - The node to insert
  `refChild` - The reference node (that is, the node before which the new node must be inserted), or `null`
Returns:
  The node being inserted

#### insertFirst

    public final Node insertFirst(Node child)

Inserts the given child as the first child of this node.

Parameters:
  `child` - the child to be inserted
Returns:
  The node being inserted

#### isOrHasChild

    public final boolean isOrHasChild(Node child)

Determine whether a node is equal to, or the child of, this node.

Parameters:
  `child` - the potential child element
Returns:
  `true` if the relationship holds

#### removeChild

    public final Node removeChild(Node oldChild)

Removes the child node indicated by oldChild from the list of children, and returns it.

Parameters:
  `oldChild` - The node being removed
Returns:
  The node removed

#### removeAllChildren

    public final Node removeAllChildren()

Remove all children of the node.

#### removeFromParent

    public final void removeFromParent()

Removes this node from its parent node if it is attached to one.

#### replaceChild

    public final Node replaceChild(Node newChild,
                                   Node oldChild)

Replaces the child node oldChild with newChild in the list of children, and returns the oldChild node.

Parameters:
  `newChild` - The new node to put in the child list
  `oldChild` - The node being replaced in the list
Returns:
  The node replaced

#### setNodeValue

    public final void setNodeValue(java.lang.String nodeValue)

The value of this node, depending on its type; see the table above. When it is defined to be null, setting it has no effect.