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
    Modifier and Type | Field and Description
    --- | ---
    `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
    Modifier | Constructor and Description
    --- | ---
    `protected` | `Node()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `<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` | `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, 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

    - #### 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.