Class TreeNode


  • public class TreeNode
    extends Object
    Simplified implementation of a Node from a Document Object Model (DOM) parse of an XML document. This class is used to represent a DOM tree so that the XML parser's implementation of org.w3c.dom need not be visible to the remainder of Jasper.

    WARNING - Construction of a new tree, or modifications to an existing one, are not thread-safe and such accesses must be synchronized.

    Version:
    $Revision: 1.2 $ $Date: 2005/12/08 01:29:00 $
    Author:
    Craig R. McClanahan
    • Field Detail

      • attributes

        protected HashMap<String,​String> attributes
        The attributes of this node, keyed by attribute name, Instantiated only if required.
      • body

        protected String body
        The body text associated with this node (if any).
      • children

        protected ArrayList<TreeNode> children
        The children of this node, instantiated only if required.
      • name

        protected String name
        The name of this node.
      • parent

        protected TreeNode parent
        The parent node of this node.
    • Constructor Detail

      • TreeNode

        public TreeNode​(String name)
        Construct a new node with no parent.
        Parameters:
        name - The name of this node
      • TreeNode

        public TreeNode​(String name,
                        TreeNode parent)
        Construct a new node with the specified parent.
        Parameters:
        name - The name of this node
        parent - The node that is the parent of this node
    • Method Detail

      • addAttribute

        public void addAttribute​(String name,
                                 String value)
        Add an attribute to this node, replacing any existing attribute with the same name.
        Parameters:
        name - The attribute name to add
        value - The new attribute value
      • addChild

        public void addChild​(TreeNode node)
        Add a new child node to this node.
        Parameters:
        node - The new child node
      • findAttribute

        public String findAttribute​(String name)
        Return the value of the specified node attribute if it exists, or null otherwise.
        Parameters:
        name - Name of the requested attribute
      • findAttributes

        public Iterator<String> findAttributes()
        Return an Iterator of the attribute names of this node. If there are no attributes, an empty Iterator is returned.
      • findChild

        public TreeNode findChild​(String name)
        Return the first child node of this node with the specified name, if there is one; otherwise, return null.
        Parameters:
        name - Name of the desired child element
      • findChildren

        public Iterator<TreeNode> findChildren()
        Return an Iterator of all children of this node. If there are no children, an empty Iterator is returned.
      • findChildren

        public Iterator<TreeNode> findChildren​(String name)
        Return an Iterator over all children of this node that have the specified name. If there are no such children, an empty Iterator is returned.
        Parameters:
        name - Name used to select children
      • getBody

        public String getBody()
        Return the body text associated with this node (if any).
      • getName

        public String getName()
        Return the name of this node.
      • removeAttribute

        public void removeAttribute​(String name)
        Remove any existing value for the specified attribute name.
        Parameters:
        name - The attribute name to remove
      • removeNode

        public void removeNode​(TreeNode node)
        Remove a child node from this node, if it is one.
        Parameters:
        node - The child node to remove
      • setBody

        public void setBody​(String body)
        Set the body text associated with this node (if any).
        Parameters:
        body - The body text (if any)
      • toString

        public String toString()
        Return a String representation of this TreeNode.
        Overrides:
        toString in class Object
      • toString

        protected void toString​(StringBuilder sb,
                                int indent,
                                TreeNode node)
        Append to the specified StringBuilder a character representation of this node, with the specified amount of indentation.
        Parameters:
        sb - The StringBuilder to append to
        indent - Number of characters of indentation
        node - The TreeNode to be printed