Top Description Fields Methods
org.dom4j

public Interface Node

extends Cloneable
Known Direct Subinterfaces
org.dom4j.ProcessingInstruction, org.dom4j.Attribute, org.dom4j.Branch, org.dom4j.CharacterData, org.dom4j.DocumentType, org.dom4j.Entity
Known Direct Implementers
org.dom4j.tree.AbstractNode
Annotations
@SuppressWarnings:unused
Imports
java.io.IOException, .Writer, java.util.List

Node defines the polymorphic behavior for all XML nodes in a dom4j tree. A node can be output as its XML format, can be detached from its position in a document and can have XPath expressions evaluated on itself. A node may optionally support the parent relationship and may be read only.
Author
James Strachan
Version
$Revision: 1.31 $
See Also
supportsParent, isReadOnly

Field Summary

Modifier and TypeField and Description
public static final short
ANY_NODE

Matches Element nodes

public static final short
ATTRIBUTE_NODE

Matches elements nodes

public static final short
CDATA_SECTION_NODE

Matches elements nodes

public static final short
COMMENT_NODE

Matches Comments nodes

public static final short
DOCUMENT_NODE

Matches Document nodes

public static final short
DOCUMENT_TYPE_NODE

Matches DocumentType nodes

public static final short
ELEMENT_NODE

Matches Element nodes

public static final short
ENTITY_REFERENCE_NODE

Matches elements nodes

public static final short
MAX_NODE_TYPE

The maximum number of node types for sizing purposes

public static final short
NAMESPACE_NODE

Matchs a Namespace Node - NOTE this differs from DOM

public static final short
PROCESSING_INSTRUCTION_NODE

Matches ProcessingInstruction

public static final short
TEXT_NODE

Matches elements nodes

public static final short
UNKNOWN_NODE

Does not match any valid node

Method Summary

Modifier and TypeMethod and Description
public void
accept(Visitor
is the visitor in the Visitor Pattern
visitor
)

accept is the method used in the Visitor Pattern.

public String

Returns:

the XML representation of this node
asXML
()

asXML returns the textual XML representation of this node.

public Node

Returns:

a Node which supports the parent relationship
asXPathResult
(Element
DOCUMENT ME!
parent
)

asXPathResult returns a version of this node which is capable of being an XPath result.

public Object

Returns:

a deep clone of myself or myself if I am read only.
clone
()

clone will return a deep clone or if this node is read-only then clone will return the same instance.

public XPath

Returns:

an XPath object represeting the given expression
createXPath
(String
is the XPath expression to be evaluated
xpathExpression
)

createXPath creates an XPath object for the given xpathExpression.

public Node

Returns:

the node that has been removed from its parent node if any and its document if any.
detach
()

Removes this node from its parent if there is one.

public Document

Returns:

the document of this node or null if this feature is not supported or the node is not associated with a Document
getDocument
()

getDocument returns the Document that this Node is part of if this node supports the parent relationship.

public String

Returns:

the XML name of this node
getName
()

getName returns the name of this node.

public short

Returns:

a W3C DOM complient code for the node type such as ELEMENT_NODE or ATTRIBUTE_NODE
getNodeType
()

Returns the code according to the type of node.

public String

Returns:

the name of the type of node such as "Document", "Element", "Attribute" or "Text"
getNodeTypeName
()

DOCUMENT ME!

public Element

Returns:

the parent of this node or null if it is the root of the tree or the parent relationship is not supported.
getParent
()

getParent returns the parent Element if this node supports the parent relationship or null if it is the root element or does not support the parent relationship.

public String

Returns:

the XPath expression which will return a nodeset containing at least this node.
getPath
()

Returns the XPath expression which will return a node set containing the given node such as /a/b/@c.

public String

Returns:

the XPath expression relative to the given context which will return a nodeset containing at least this node.
getPath
(Element
is the parent context from which the relative path should start. If the context is null or the context is not an ancestor of this node then the path will be absolute and start from the document and so begin with the '/' character.
context
)

Returns the relative XPath expression which will return a node set containing the given node such as a/b/@c.

public String

Returns:

the text from all the child Text and Element nodes appended together.
getStringValue
()

Returns the XPath string-value of this node.

public String

Returns:

the text for this node.
getText
()

Returns the text of this node.

public String

Returns:

the XPath expression which will return a nodeset containing just this node.
getUniquePath
()

Returns the XPath expression which will return a nodeset of one node which is the current node.

public String

Returns:

the XPath expression relative to the given context which will return a nodeset containing just this node.
getUniquePath
(Element
is the parent context from which the path should start. If the context is null or the context is not an ancestor of this node then the path will start from the document and so begin with the '/' character.
context
)

Returns the relative unique XPath expression from the given context which will return a nodeset of one node which is the current node.

public boolean

Returns:

true if this Node is a Branch with a nodeCount() of one or more.
hasContent
()

hasContent returns true if this node is a Branch (either an Element or a Document) and it contains at least one content node such as a child Element or Text node.

public boolean

Returns:

true if this Node is read only and cannot be modified otherwise false.
isReadOnly
()

isReadOnly returns true if this node is read only and cannot be modified.

public boolean

Returns:

true if this node is returned by the given XPath expression
matches
(String
is an XPath expression
xpathExpression
)

matches returns true if evaluating the given XPath expression on this node returns a non-empty node set containing this node.

public Number

Returns:

the numeric result of the XPath expression or null if the result is not a number.
numberValueOf
(String
is the XPath expression to be evaluated
xpathExpression
)

numberValueOf evaluates an XPath expression and returns the numeric value of the XPath expression if the XPath expression results in a number, or null if the result is not a number.

public List<Node>

Returns:

the list of Node or String instances depending on the XPath expression
selectNodes
(String
is the XPath expression to be evaluated
xpathExpression
)

selectNodes evaluates an XPath expression and returns the result as a List of Node instances or String instances depending on the XPath expression.

public List<Node>

Returns:

the list of Node instances sorted by the comparisonXPathExpression
selectNodes
(String
is the XPath expression to be evaluated
xpathExpression
,
String
is the XPath expression used to compare the results by for sorting
comparisonXPathExpression
)

selectNodes evaluates an XPath expression then sorts the results using a secondary XPath expression Returns a sorted List of Node instances.

public List<Node>

Returns:

the list of Node instances sorted by the comparisonXPathExpression
selectNodes
(String
is the XPath expression to be evaluated
xpathExpression
,
String
is the XPath expression used to compare the results by for sorting
comparisonXPathExpression
,
boolean
if this parameter is true then duplicate values (using the comparisonXPathExpression) are removed from the result List.
removeDuplicates
)

selectNodes evaluates an XPath expression then sorts the results using a secondary XPath expression Returns a sorted List of Node instances.

public Object

Returns:

the value of the XPath expression as a Listof Node instances, a Stringor a Numberinstance depending on the XPath expression.
selectObject
(String
is the XPath expression to be evaluated
xpathExpression
)

selectObject evaluates an XPath expression and returns the result as an Object.

public Node

Returns:

the Node matching the XPath expression
selectSingleNode
(String
is the XPath expression to be evaluated
xpathExpression
)

selectSingleNode evaluates an XPath expression and returns the result as a single Node instance.

public void
setDocument(Document
is the new document of this node.
document
)

setDocument sets the document of this node if the parent relationship is supported or does nothing if the parent relationship is not supported.

public void
setName(String
is the new name of this node
name
)

Sets the text data of this node or this method will throw an UnsupportedOperationException if it is read-only.

public void
setParent(Element
is the new parent of this node.
parent
)

setParent sets the parent relationship of this node if the parent relationship is supported or does nothing if the parent relationship is not supported.

public void
setText(String
is the new textual value of this node
text
)

Sets the text data of this node or this method will throw an UnsupportedOperationException if it is read-only.

public boolean

Returns:

true if this node supports the parent relationship or false it is not supported
supportsParent
()

supportsParent returns true if this node supports the parent relationship.

public String

Returns:

the string-value representation of the results of the XPath expression
valueOf
(String
is the XPath expression to be evaluated
xpathExpression
)

valueOf evaluates an XPath expression and returns the textual representation of the results the XPath string-value of this node.

public void
write(Writer
is the Writer to output the XML to
writer
)

write writes this node as the default XML notation for this node.

Field Detail

ANY_NODEback to summary
public static final short ANY_NODE

Matches Element nodes

ATTRIBUTE_NODEback to summary
public static final short ATTRIBUTE_NODE

Matches elements nodes

CDATA_SECTION_NODEback to summary
public static final short CDATA_SECTION_NODE

Matches elements nodes

COMMENT_NODEback to summary
public static final short COMMENT_NODE

Matches Comments nodes

DOCUMENT_NODEback to summary
public static final short DOCUMENT_NODE

Matches Document nodes

DOCUMENT_TYPE_NODEback to summary
public static final short DOCUMENT_TYPE_NODE

Matches DocumentType nodes

ELEMENT_NODEback to summary
public static final short ELEMENT_NODE

Matches Element nodes

ENTITY_REFERENCE_NODEback to summary
public static final short ENTITY_REFERENCE_NODE

Matches elements nodes

MAX_NODE_TYPEback to summary
public static final short MAX_NODE_TYPE

The maximum number of node types for sizing purposes

NAMESPACE_NODEback to summary
public static final short NAMESPACE_NODE

Matchs a Namespace Node - NOTE this differs from DOM

PROCESSING_INSTRUCTION_NODEback to summary
public static final short PROCESSING_INSTRUCTION_NODE

Matches ProcessingInstruction

TEXT_NODEback to summary
public static final short TEXT_NODE

Matches elements nodes

UNKNOWN_NODEback to summary
public static final short UNKNOWN_NODE

Does not match any valid node

Method Detail

acceptback to summary
public void accept(Visitor visitor)

accept is the method used in the Visitor Pattern.

Parameters
visitor:Visitor

is the visitor in the Visitor Pattern

asXMLback to summary
public String asXML()

asXML returns the textual XML representation of this node.

Returns:String

the XML representation of this node

asXPathResultback to summary
public Node asXPathResult(Element parent)

asXPathResult returns a version of this node which is capable of being an XPath result. The result of an XPath expression should always support the parent relationship, whether the original XML tree was singly or doubly linked. If the node does not support the parent relationship then a new node will be created which is linked to its parent and returned.

Parameters
parent:Element

DOCUMENT ME!

Returns:Node

a Node which supports the parent relationship

cloneback to summary
public Object clone()

clone will return a deep clone or if this node is read-only then clone will return the same instance.

Returns:Object

a deep clone of myself or myself if I am read only.

createXPathback to summary
public XPath createXPath(String xpathExpression) throws InvalidXPathException

createXPath creates an XPath object for the given xpathExpression. The XPath object allows the variable context to be specified.

Parameters
xpathExpression:String

is the XPath expression to be evaluated

Returns:XPath

an XPath object represeting the given expression

Exceptions
InvalidXPathException:
if the XPath expression is invalid
detachback to summary
public Node detach()

Removes this node from its parent if there is one. If this node is the root element of a document then it is removed from the document as well.

This method is useful if you want to remove a node from its source document and add it to another document. For example

Node node = ...; Element someOtherElement = ...; someOtherElement.add( node.detach() );
Returns:Node

the node that has been removed from its parent node if any and its document if any.

getDocumentback to summary
public Document getDocument()

getDocument returns the Document that this Node is part of if this node supports the parent relationship.

This method is an optional feature and may not be supported for all Node implementations.

Returns:Document

the document of this node or null if this feature is not supported or the node is not associated with a Document

getNameback to summary
public String getName()

getName returns the name of this node. This is the XML local name of the element, attribute, entity or processing instruction. For CDATA and Text nodes this method will return null.

Returns:String

the XML name of this node

getNodeTypeback to summary
public short getNodeType()

Returns the code according to the type of node. This makes processing nodes polymorphically much easier as the switch statement can be used instead of multiple if (instanceof) statements.

Returns:short

a W3C DOM complient code for the node type such as ELEMENT_NODE or ATTRIBUTE_NODE

getNodeTypeNameback to summary
public String getNodeTypeName()

DOCUMENT ME!

Returns:String

the name of the type of node such as "Document", "Element", "Attribute" or "Text"

getParentback to summary
public Element getParent()

getParent returns the parent Element if this node supports the parent relationship or null if it is the root element or does not support the parent relationship.

This method is an optional feature and may not be supported for all Node implementations.

Returns:Element

the parent of this node or null if it is the root of the tree or the parent relationship is not supported.

getPathback to summary
public String getPath()

Returns the XPath expression which will return a node set containing the given node such as /a/b/@c. No indexing will be used to restrict the path if multiple elements with the same name occur on the path.

Returns:String

the XPath expression which will return a nodeset containing at least this node.

getPathback to summary
public String getPath(Element context)

Returns the relative XPath expression which will return a node set containing the given node such as a/b/@c. No indexing will be used to restrict the path if multiple elements with the same name occur on the path.

Parameters
context:Element

is the parent context from which the relative path should start. If the context is null or the context is not an ancestor of this node then the path will be absolute and start from the document and so begin with the '/' character.

Returns:String

the XPath expression relative to the given context which will return a nodeset containing at least this node.

getStringValueback to summary
public String getStringValue()

Returns the XPath string-value of this node. The behaviour of this method is defined in the XPath specification .

Returns:String

the text from all the child Text and Element nodes appended together.

getTextback to summary
public String getText()

Returns the text of this node.

Returns:String

the text for this node.

getUniquePathback to summary
public String getUniquePath()

Returns the XPath expression which will return a nodeset of one node which is the current node. This method will use the XPath index operator to restrict the path if multiple elements with the same name occur on the path.

Returns:String

the XPath expression which will return a nodeset containing just this node.

getUniquePathback to summary
public String getUniquePath(Element context)

Returns the relative unique XPath expression from the given context which will return a nodeset of one node which is the current node. This method will use the XPath index operator to restrict the path if multiple elements with the same name occur on the path.

Parameters
context:Element

is the parent context from which the path should start. If the context is null or the context is not an ancestor of this node then the path will start from the document and so begin with the '/' character.

Returns:String

the XPath expression relative to the given context which will return a nodeset containing just this node.

hasContentback to summary
public boolean hasContent()

hasContent returns true if this node is a Branch (either an Element or a Document) and it contains at least one content node such as a child Element or Text node.

Returns:boolean

true if this Node is a Branch with a nodeCount() of one or more.

isReadOnlyback to summary
public boolean isReadOnly()

isReadOnly returns true if this node is read only and cannot be modified. Any attempt to modify a read-only Node will result in an UnsupportedOperationException being thrown.

Returns:boolean

true if this Node is read only and cannot be modified otherwise false.

matchesback to summary
public boolean matches(String xpathExpression)

matches returns true if evaluating the given XPath expression on this node returns a non-empty node set containing this node.

This method does not behave like the <xsl:if> element - if you want that behaviour, to evaluate if an XPath expression matches something, then you can use the following code to be equivalent...

if ( node.selectSingleNode( "/some/path" ) != nulll )
Parameters
xpathExpression:String

is an XPath expression

Returns:boolean

true if this node is returned by the given XPath expression

numberValueOfback to summary
public Number numberValueOf(String xpathExpression)

numberValueOf evaluates an XPath expression and returns the numeric value of the XPath expression if the XPath expression results in a number, or null if the result is not a number.

Parameters
xpathExpression:String

is the XPath expression to be evaluated

Returns:Number

the numeric result of the XPath expression or null if the result is not a number.

selectNodesback to summary
public List<Node> selectNodes(String xpathExpression)

selectNodes evaluates an XPath expression and returns the result as a List of Node instances or String instances depending on the XPath expression.

Parameters
xpathExpression:String

is the XPath expression to be evaluated

Returns:List<Node>

the list of Node or String instances depending on the XPath expression

selectNodesback to summary
public List<Node> selectNodes(String xpathExpression, String comparisonXPathExpression)

selectNodes evaluates an XPath expression then sorts the results using a secondary XPath expression Returns a sorted List of Node instances.

Parameters
xpathExpression:String

is the XPath expression to be evaluated

comparisonXPathExpression:String

is the XPath expression used to compare the results by for sorting

Returns:List<Node>

the list of Node instances sorted by the comparisonXPathExpression

selectNodesback to summary
public List<Node> selectNodes(String xpathExpression, String comparisonXPathExpression, boolean removeDuplicates)

selectNodes evaluates an XPath expression then sorts the results using a secondary XPath expression Returns a sorted List of Node instances.

Parameters
xpathExpression:String

is the XPath expression to be evaluated

comparisonXPathExpression:String

is the XPath expression used to compare the results by for sorting

removeDuplicates:boolean

if this parameter is true then duplicate values (using the comparisonXPathExpression) are removed from the result List.

Returns:List<Node>

the list of Node instances sorted by the comparisonXPathExpression

selectObjectback to summary
public Object selectObject(String xpathExpression)

selectObject evaluates an XPath expression and returns the result as an Object. The object returned can either be a List of one or more Nodeinstances or a scalar object like a Stringor a Numberinstance depending on the XPath expression.

Parameters
xpathExpression:String

is the XPath expression to be evaluated

Returns:Object

the value of the XPath expression as a Listof Node instances, a Stringor a Numberinstance depending on the XPath expression.

selectSingleNodeback to summary
public Node selectSingleNode(String xpathExpression)

selectSingleNode evaluates an XPath expression and returns the result as a single Node instance.

Parameters
xpathExpression:String

is the XPath expression to be evaluated

Returns:Node

the Node matching the XPath expression

setDocumentback to summary
public void setDocument(Document document)

setDocument sets the document of this node if the parent relationship is supported or does nothing if the parent relationship is not supported.

This method should only be called from inside a Document implementation method and is not intended for general use.

Parameters
document:Document

is the new document of this node.

setNameback to summary
public void setName(String name)

Sets the text data of this node or this method will throw an UnsupportedOperationException if it is read-only.

Parameters
name:String

is the new name of this node

setParentback to summary
public void setParent(Element parent)

setParent sets the parent relationship of this node if the parent relationship is supported or does nothing if the parent relationship is not supported.

This method should only be called from inside an Element implementation method and is not intended for general use.

Parameters
parent:Element

is the new parent of this node.

setTextback to summary
public void setText(String text)

Sets the text data of this node or this method will throw an UnsupportedOperationException if it is read-only.

Parameters
text:String

is the new textual value of this node

supportsParentback to summary
public boolean supportsParent()

supportsParent returns true if this node supports the parent relationship.

Some XML tree implementations are singly linked and only support downward navigation through children relationships. The default case is that both parent and children relationships are supported though for memory and performance reasons the parent relationship may not be supported.

Returns:boolean

true if this node supports the parent relationship or false it is not supported

valueOfback to summary
public String valueOf(String xpathExpression)

valueOf evaluates an XPath expression and returns the textual representation of the results the XPath string-value of this node. The string-value for a given node type is defined in the XPath specification .

Parameters
xpathExpression:String

is the XPath expression to be evaluated

Returns:String

the string-value representation of the results of the XPath expression

writeback to summary
public void write(Writer writer) throws IOException

write writes this node as the default XML notation for this node. If you wish to control the XML output (such as for pretty printing, changing the indentation policy etc.) then please use org.dom4j.io.XMLWriter or its derivations.

Parameters
writer:Writer

is the Writer to output the XML to

Exceptions
IOException:
DOCUMENT ME!