public class Node extends 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" }}
Constructor and description |
---|
Node
(Node parent, 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, Object name, 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, Object name, Map attributes) Creates a new Node named name with
attributes specified in the attributes Map. |
Node
(Node parent, Object name, Map attributes, Object value) Creates a new Node named name with value value and
with attributes specified in the attributes Map. |
Type | Name and description |
---|---|
boolean |
append(Node child) Appends a child to the current node. |
Node |
appendNode(Object name, Map attributes) Creates a new node as a child of the current node. |
Node |
appendNode(Object name) Creates a new node as a child of the current node. |
Node |
appendNode(Object name, Object value) Creates a new node as a child of the current node. |
Node |
appendNode(Object name, Map attributes, Object value) Creates a new node as a child of the current node. |
Object |
attribute(Object key) Provides lookup of attributes by key. |
Map |
attributes() Returns a Map of the attributes of the node or an empty Map
if the node does not have any attributes. |
List |
breadthFirst() Provides a collection of all the nodes in the tree using a breadth-first traversal. |
List |
children() Returns a List of the nodes children. |
Object |
clone() Creates a new Node with the same name, no parent, shallow cloned attributes and if the value is a NodeList, a (deep) clone of those nodes. |
List |
depthFirst() Provides a collection of all the nodes in the tree using a depth first traversal. |
Object |
get(String key) Provides lookup of elements by non-namespaced name |
NodeList |
getAt(QName name) Provides lookup of elements by QName. |
Iterator |
iterator() Returns an Iterator of the children of the node. |
List<String> |
localText() Returns the list of any direct String nodes of this node. |
Object |
name() Returns an Object representing the name of the node. |
Node |
parent() Returns the parent of the node. |
void |
plus(Closure c) Adds sibling nodes (defined using builder-style notation via a Closure) after the current node. |
void |
print(PrintWriter out) Writes the node to the specified PrintWriter . |
boolean |
remove(Node child) Removes a child of the current node. |
Node |
replaceNode(Closure c) Replaces the current node with nodes defined using builder-style notation via a Closure. |
Node |
replaceNode(Node n) Replaces the current node with the supplied node. |
protected static void |
setMetaClass(MetaClass metaClass, Class nodeClass) Extension point for subclasses to override the metaclass. |
protected void |
setParent(Node parent) Adds or replaces the parent of the node. |
void |
setValue(Object value) Adds or replaces the value of the node. |
String |
text() Returns the textual representation of the current node and all its child nodes. |
String |
toString() |
Object |
value() Returns an Object representing the value of the node. |
Creates a new Node named name
and if a parent is supplied, adds
the newly created node as a child of the parent.
parent
- the parent node or null if no parentname
- the name of the node 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.
parent
- the parent node or null if no parentname
- the name of the nodevalue
- the Node value, e.g. some text but in general any Object 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.
parent
- the parent node or null if no parentname
- the name of the nodeattributes
- a Map of name-value pairs 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.
parent
- the parent node or null if no parentname
- the name of the nodeattributes
- a Map of name-value pairsvalue
- the Node value, e.g. some text but in general any ObjectAppends a child to the current node.
child
- the child to appendtrue
Creates a new node as a child of the current node.
name
- the name of the new nodeattributes
- the attributes of the new nodeNode
Creates a new node as a child of the current node.
name
- the name of the new nodeNode
Creates a new node as a child of the current node.
name
- the name of the new nodevalue
- the value of the new nodeNode
Creates a new node as a child of the current node.
name
- the name of the new nodeattributes
- the attributes of the new nodevalue
- the value of the new nodeNode
Provides lookup of attributes by key.
key
- the key of interestnull
if no match exists Returns a Map
of the attributes of the node or an empty Map
if the node does not have any attributes.
Provides a collection of all the nodes in the tree using a breadth-first traversal.
Returns a List
of the nodes children.
Creates a new Node with the same name, no parent, shallow cloned attributes and if the value is a NodeList, a (deep) clone of those nodes.
Provides a collection of all the nodes in the tree using a depth first traversal.
Provides lookup of elements by non-namespaced name
key
- the name (or shortcut key) of the node(s) of interestProvides lookup of elements by QName.
name
- the QName of interest Returns an Iterator
of the children of the node.
Returns the list of any direct String nodes of this node.
Returns an Object
representing the name of the node.
null
if name is emptyReturns the parent of the node.
null
for the root nodeAdds sibling nodes (defined using builder-style notation via a Closure) after the current node.
c
- A Closure defining the new sibling nodes to add using builder-style notation. Writes the node to the specified PrintWriter
.
out
- the writer receiving the outputRemoves a child of the current node.
child
- the child to removetrue
if the param was a child of the current nodeReplaces the current node with nodes defined using builder-style notation via a Closure.
c
- A Closure defining the new nodes using builder-style notation.Replaces the current node with the supplied node.
n
- the new NodeExtension point for subclasses to override the metaclass. The default one supports the property and @ attribute notations.
metaClass
- the original metaclassnodeClass
- the class whose metaclass we wish to override (this class or a subclass)Adds or replaces the parent of the node.
parent
- the new parent of the nodeAdds or replaces the value of the node.
value
- the new value of the nodeReturns the textual representation of the current node and all its child nodes.
Returns an Object
representing the value of the node.
null
if value is emptyCopyright © 2003-2015 The Apache Software Foundation. All rights reserved.