Groovy Documentation

## groovy.util
[Java] Class Node

    java.lang.Object
      groovy.util.Node

All Implemented Interfaces:
  java.io.Serializable

    public class Node
    extends java.lang.Object

Represents an arbitrary tree node which can be used for structured metadata or any arbitrary XML-like tree. A node can have a name, a value and an optional Map of attributes. Typically the name is a String and a value is either a String or a List of other Nodes, though the types are extensible to provide a flexible structure, e.g. you could use a QName as the name which includes a namespace URI and a local name. Or a JMX ObjectName etc. So this class can represent metadata like `{foo a=1 b="abc"}` or nested metadata like `{foo a=1 b="123" { bar x=12 text="hello" }}`

Authors:
  James Strachan
  Paul King

Version:
  \$Revision\$

Constructor Summary
`Node(Node parent, java.lang.Object name)` Creates a new Node named `name` and if a parent is supplied, adds the newly created node as a child of the parent.
`Node(Node parent, java.lang.Object name, java.lang.Object value)` Creates a new Node named `name` with value `value` and if a parent is supplied, adds the newly created node as a child of the parent.
`Node(Node parent, java.lang.Object name, java.util.Map attributes)` Creates a new Node named `name` with attributes specified in the `attributes` Map.
`Node(Node parent, java.lang.Object name, java.util.Map attributes, java.lang.Object value)` Creates a new Node named `name` with value `value` and with attributes specified in the `attributes` Map.

Method Summary
`boolean` | `append(Node child)`
`Node` | `appendNode(java.lang.Object name, java.util.Map attributes)`
`Node` | `appendNode(java.lang.Object name)`
`Node` | `appendNode(java.lang.Object name, java.lang.Object value)`
`Node` | `appendNode(java.lang.Object name, java.util.Map attributes, java.lang.Object value)`
`java.lang.Object` | `attribute(java.lang.Object key)`
`java.util.Map` | `attributes()`
`java.util.List` | `breadthFirst()` Provide a collection of all the nodes in the tree using a breadth-first traversal.
`java.util.List` | `children()`
`java.util.List` | `depthFirst()` Provide a collection of all the nodes in the tree using a depth first traversal.
`java.lang.Object` | `get(java.lang.String key)`
`NodeList` | `getAt(QName name)` Provides lookup of elements by QName.
`java.util.Iterator` | `iterator()`
`java.lang.Object` | `name()`
`Node` | `parent()`
`void` | `plus(Closure c)` Adds sibling nodes (defined using builder-style notation via a Closure) after the current node.
`void` | `print(java.io.PrintWriter out)`
`boolean` | `remove(Node child)`
`Node` | `replaceNode(Closure c)` Replaces the current node with nodes defined using builder-style notation via a Closure.
`protected static void` | `setMetaClass(MetaClass metaClass, java.lang.Class nodeClass)`
`protected void` | `setParent(Node parent)`
`void` | `setValue(java.lang.Object value)`
`java.lang.String` | `text()`
`java.lang.String` | `toString()`
`java.lang.Object` | `value()`

Methods inherited from class java.lang.Object
java.lang.Object#wait(long), java.lang.Object#wait(long, int), java.lang.Object#wait(), java.lang.Object#equals(java.lang.Object), java.lang.Object#toString(), java.lang.Object#hashCode(), java.lang.Object#getClass(), java.lang.Object#notify(), java.lang.Object#notifyAll()

Constructor Detail

### Node

    public Node(Node parent, java.lang.Object name)

  Creates a new Node named `name` and if a parent is supplied, adds the newly created node as a child of the parent.
  Parameters:
    `parent` - the parent node or null if no parent
    `name` - the name of the node

### Node

    public Node(Node parent, java.lang.Object name, java.lang.Object value)

  Creates a new Node named `name` with value `value` and if a parent is supplied, adds the newly created node as a child of the parent.
  Parameters:
    `parent` - the parent node or null if no parent
    `name` - the name of the node
    `value` - the Node value, e.g. some text but in general any Object

### Node

    public Node(Node parent, java.lang.Object name, java.util.Map attributes)

  Creates a new Node named `name` with attributes specified in the `attributes` Map. If a parent is supplied, the newly created node is added as a child of the parent.
  Parameters:
    `parent` - the parent node or null if no parent
    `name` - the name of the node
    `attributes` - a Map of name-value pairs

### Node

    public Node(Node parent, java.lang.Object name, java.util.Map attributes, java.lang.Object value)

  Creates a new Node named `name` with value `value` and with attributes specified in the `attributes` Map. If a parent is supplied, the newly created node is added as a child of the parent.
  Parameters:
    `parent` - the parent node or null if no parent
    `name` - the name of the node
    `attributes` - a Map of name-value pairs
    `value` - the Node value, e.g. some text but in general any Object

Method Detail

### append

    public boolean append(Node child)

### appendNode

    public Node appendNode(java.lang.Object name, java.util.Map attributes)

### appendNode

    public Node appendNode(java.lang.Object name)

### appendNode

    public Node appendNode(java.lang.Object name, java.lang.Object value)

### appendNode

    public Node appendNode(java.lang.Object name, java.util.Map attributes, java.lang.Object value)

### attribute

    public java.lang.Object attribute(java.lang.Object key)

### attributes

    public java.util.Map attributes()

### breadthFirst

    public java.util.List breadthFirst()

  Provide a collection of all the nodes in the tree using a breadth-first traversal.
  Returns:
    the list of (breadth-first) ordered nodes

### children

    public java.util.List children()

### depthFirst

    public java.util.List depthFirst()

  Provide a collection of all the nodes in the tree using a depth first traversal.
  Returns:
    the list of (depth-first) ordered nodes

### get

    public java.lang.Object get(java.lang.String key)

### getAt

    public NodeList getAt(QName name)

  Provides lookup of elements by QName.
  Parameters:
    `name` - the QName of interest
  Returns:
    the nodes matching name

### iterator

    public java.util.Iterator iterator()

### name

    public java.lang.Object name()

### parent

    public Node parent()

### plus

    public void plus(Closure c)

  Adds sibling nodes (defined using builder-style notation via a Closure) after the current node.
  Parameters:
    `c` - A Closure defining the new sibling nodes to add using builder-style notation.

### print

    public void print(java.io.PrintWriter out)

### remove

    public boolean remove(Node child)

### replaceNode

    public Node replaceNode(Closure c)

  Replaces the current node with nodes defined using builder-style notation via a Closure.
  Parameters:
    `c` - A Closure defining the new nodes using builder-style notation.
  Returns:
    the last appended node

### setMetaClass

    protected static void setMetaClass(MetaClass metaClass, java.lang.Class nodeClass)

### setParent

    protected void setParent(Node parent)

### setValue

    public void setValue(java.lang.Object value)

### text

    public java.lang.String text()

### toString

    public java.lang.String toString()

### value

    public java.lang.Object value()

Groovy Documentation