Package org.dom4j

Interface Node

All Superinterfaces:
Cloneable
All Known Subinterfaces:
Attribute, Branch, CDATA, CharacterData, Comment, Document, DocumentType, Element, Entity, ProcessingInstruction, Text
All Known Implementing Classes:
AbstractAttribute, AbstractBranch, AbstractCDATA, AbstractCharacterData, AbstractComment, AbstractDocument, AbstractDocumentType, AbstractElement, AbstractEntity, AbstractNode, AbstractProcessingInstruction, AbstractText, BaseElement, BeanAttribute, BeanElement, DefaultAttribute, DefaultCDATA, DefaultComment, DefaultDocument, DefaultDocumentType, DefaultElement, DefaultEntity, DefaultNamespace, DefaultProcessingInstruction, DefaultText, DOMAttribute, DOMCDATA, DOMComment, DOMDocument, DOMDocumentType, DOMElement, DOMEntityReference, DOMNamespace, DOMProcessingInstruction, DOMText, FlyweightAttribute, FlyweightCDATA, FlyweightComment, FlyweightEntity, FlyweightProcessingInstruction, FlyweightText, IndexedElement, Namespace, NonLazyElement, UserDataAttribute, UserDataElement

public interface Node extends Cloneable

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.

Version:
$Revision: 1.31 $
Author:
James Strachan
See Also:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final short
    Matches Element nodes
    static final short
    Matches elements nodes
    static final short
    Matches elements nodes
    static final short
    Matches Comments nodes
    static final short
    Matches Document nodes
    static final short
    Matches DocumentType nodes
    static final short
    Matches Element nodes
    static final short
    Matches elements nodes
    static final short
    The maximum number of node types for sizing purposes
    static final short
    Matchs a Namespace Node - NOTE this differs from DOM
    static final short
    Matches ProcessingInstruction
    static final short
    Matches elements nodes
    static final short
    Does not match any valid node
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    accept(Visitor visitor)
    accept is the method used in the Visitor Pattern.
    asXML returns the textual XML representation of this node.
    asXPathResult returns a version of this node which is capable of being an XPath result.
    clone will return a deep clone or if this node is read-only then clone will return the same instance.
    createXPath(String xpathExpression)
    createXPath creates an XPath object for the given xpathExpression.
    Removes this node from its parent if there is one.
    getDocument returns the Document that this Node is part of if this node supports the parent relationship.
    getName returns the name of this node.
    short
    Returns the code according to the type of node.
    DOCUMENT ME!
    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.
    Returns the XPath expression which will return a node set containing the given node such as /a/b/@c.
    getPath(Element context)
    Returns the relative XPath expression which will return a node set containing the given node such as a/b/@c.
    Returns the XPath string-value of this node.
    Returns the text of this node.
    Returns the XPath expression which will return a nodeset of one node which is the current node.
    Returns the relative unique XPath expression from the given context which will return a nodeset of one node which is the current node.
    boolean
    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.
    boolean
    isReadOnly returns true if this node is read only and cannot be modified.
    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.
    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.
    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.
    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.
    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.
    selectObject(String xpathExpression)
    selectObject evaluates an XPath expression and returns the result as an Object.
    selectSingleNode(String xpathExpression)
    selectSingleNode evaluates an XPath expression and returns the result as a single Node instance.
    void
    setDocument sets the document of this node if the parent relationship is supported or does nothing if the parent relationship is not supported.
    void
    Sets the text data of this node or this method will throw an UnsupportedOperationException if it is read-only.
    void
    setParent sets the parent relationship of this node if the parent relationship is supported or does nothing if the parent relationship is not supported.
    void
    Sets the text data of this node or this method will throw an UnsupportedOperationException if it is read-only.
    boolean
    supportsParent returns true if this node supports the parent relationship.
    valueOf(String xpathExpression)
    valueOf evaluates an XPath expression and returns the textual representation of the results the XPath string-value of this node.
    void
    write(Writer writer)
    write writes this node as the default XML notation for this node.
  • Field Details

    • ANY_NODE

      static final short ANY_NODE
      Matches Element nodes
      See Also:
    • ELEMENT_NODE

      static final short ELEMENT_NODE
      Matches Element nodes
      See Also:
    • ATTRIBUTE_NODE

      static final short ATTRIBUTE_NODE
      Matches elements nodes
      See Also:
    • TEXT_NODE

      static final short TEXT_NODE
      Matches elements nodes
      See Also:
    • CDATA_SECTION_NODE

      static final short CDATA_SECTION_NODE
      Matches elements nodes
      See Also:
    • ENTITY_REFERENCE_NODE

      static final short ENTITY_REFERENCE_NODE
      Matches elements nodes
      See Also:
    • PROCESSING_INSTRUCTION_NODE

      static final short PROCESSING_INSTRUCTION_NODE
      Matches ProcessingInstruction
      See Also:
    • COMMENT_NODE

      static final short COMMENT_NODE
      Matches Comments nodes
      See Also:
    • DOCUMENT_NODE

      static final short DOCUMENT_NODE
      Matches Document nodes
      See Also:
    • DOCUMENT_TYPE_NODE

      static final short DOCUMENT_TYPE_NODE
      Matches DocumentType nodes
      See Also:
    • NAMESPACE_NODE

      static final short NAMESPACE_NODE
      Matchs a Namespace Node - NOTE this differs from DOM
      See Also:
    • UNKNOWN_NODE

      static final short UNKNOWN_NODE
      Does not match any valid node
      See Also:
    • MAX_NODE_TYPE

      static final short MAX_NODE_TYPE
      The maximum number of node types for sizing purposes
      See Also:
  • Method Details

    • supportsParent

      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:
      true if this node supports the parent relationship or false it is not supported
    • getParent

      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:
      the parent of this node or null if it is the root of the tree or the parent relationship is not supported.
    • setParent

      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 - is the new parent of this node.
    • getDocument

      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:
      the document of this node or null if this feature is not supported or the node is not associated with a Document
    • setDocument

      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 - is the new document of this node.
    • isReadOnly

      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:
      true if this Node is read only and cannot be modified otherwise false.
    • hasContent

      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:
      true if this Node is a Branch with a nodeCount() of one or more.
    • getName

      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:
      the XML name of this node
    • setName

      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 - is the new name of this node
    • getText

      String getText()

      Returns the text of this node.

      Returns:
      the text for this node.
    • setText

      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 - is the new textual value of this node
    • getStringValue

      String getStringValue()
      Returns the XPath string-value of this node. The behaviour of this method is defined in the XPath specification .
      Returns:
      the text from all the child Text and Element nodes appended together.
    • getPath

      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:
      the XPath expression which will return a nodeset containing at least this node.
    • getPath

      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 - 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:
      the XPath expression relative to the given context which will return a nodeset containing at least this node.
    • getUniquePath

      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:
      the XPath expression which will return a nodeset containing just this node.
    • getUniquePath

      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 - 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:
      the XPath expression relative to the given context which will return a nodeset containing just this node.
    • asXML

      String asXML()

      asXML returns the textual XML representation of this node.

      Returns:
      the XML representation of this node
    • write

      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 XMLWriter or its derivations.

      Parameters:
      writer - is the Writer to output the XML to
      Throws:
      IOException - DOCUMENT ME!
    • getNodeType

      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:
      a W3C DOM complient code for the node type such as ELEMENT_NODE or ATTRIBUTE_NODE
    • getNodeTypeName

      String getNodeTypeName()
      DOCUMENT ME!
      Returns:
      the name of the type of node such as "Document", "Element", "Attribute" or "Text"
    • detach

      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:
      the node that has been removed from its parent node if any and its document if any.
    • selectNodes

      List 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 - is the XPath expression to be evaluated
      Returns:
      the list of Node or String instances depending on the XPath expression
    • selectObject

      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 - is the XPath expression to be evaluated
      Returns:
      the value of the XPath expression as a Listof Node instances, a Stringor a Numberinstance depending on the XPath expression.
    • selectNodes

      List 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 - is the XPath expression to be evaluated
      comparisonXPathExpression - is the XPath expression used to compare the results by for sorting
      Returns:
      the list of Node instances sorted by the comparisonXPathExpression
    • selectNodes

      List 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 - is the XPath expression to be evaluated
      comparisonXPathExpression - is the XPath expression used to compare the results by for sorting
      removeDuplicates - if this parameter is true then duplicate values (using the comparisonXPathExpression) are removed from the result List.
      Returns:
      the list of Node instances sorted by the comparisonXPathExpression
    • selectSingleNode

      Node selectSingleNode(String xpathExpression)

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

      Parameters:
      xpathExpression - is the XPath expression to be evaluated
      Returns:
      the Node matching the XPath expression
    • valueOf

      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 - is the XPath expression to be evaluated
      Returns:
      the string-value representation of the results of the XPath expression
    • numberValueOf

      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 - is the XPath expression to be evaluated
      Returns:
      the numeric result of the XPath expression or null if the result is not a number.
    • matches

      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 - is an XPath expression
      Returns:
      true if this node is returned by the given XPath expression
    • createXPath

      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 - is the XPath expression to be evaluated
      Returns:
      an XPath object represeting the given expression
      Throws:
      InvalidXPathException - if the XPath expression is invalid
    • asXPathResult

      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 - DOCUMENT ME!
      Returns:
      a Node which supports the parent relationship
    • accept

      void accept(Visitor visitor)

      accept is the method used in the Visitor Pattern.

      Parameters:
      visitor - is the visitor in the Visitor Pattern
    • clone

      Object clone()

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

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