org.apache.struts2.jasper.xmlparser

## Class TreeNode

- java.lang.Object
- - org.apache.struts2.jasper.xmlparser.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: 467222 $ $Date: 2006-10-24 05:17:11 +0200 (Tue, 24 Oct 2006) $
  Author:
    Craig R. McClanahan

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected HashMap` | `attributes` The attributes of this node, keyed by attribute name, Instantiated only if required.
    `protected String` | `body` The body text associated with this node (if any).
    `protected ArrayList` | `children` The children of this node, instantiated only if required.
    `protected String` | `name` The name of this node.
    `protected TreeNode` | `parent` The parent node of this node.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `TreeNode(String name)` Construct a new node with no parent.
    `TreeNode(String name, TreeNode parent)` Construct a new node with the specified parent.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addAttribute(String name, String value)` Add an attribute to this node, replacing any existing attribute with the same name.
    `void` | `addChild(TreeNode node)` Add a new child node to this node.
    `String` | `findAttribute(String name)`
    `Iterator` | `findAttributes()`
    `TreeNode` | `findChild(String name)`
    `Iterator` | `findChildren()`
    `Iterator` | `findChildren(String name)`
    `String` | `getBody()`
    `String` | `getName()`
    `void` | `removeAttribute(String name)` Remove any existing value for the specified attribute name.
    `void` | `removeNode(TreeNode node)` Remove a child node from this node, if it is one.
    `void` | `setBody(String body)` Set the body text associated with this node (if any).
    `String` | `toString()`
    `protected void` | `toString(StringBuffer sb, int indent, TreeNode node)` Append to the specified StringBuffer a character representation of this node, with the specified amount of indentation.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### attributes

          protected HashMap 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 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)

      Parameters:
        `name` - Name of the requested attribute
      Returns:
        the value of the specified node attribute if it exists, or `null` otherwise.

    - #### findAttributes

          public Iterator findAttributes()

      Returns:
        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)

      Parameters:
        `name` - Name of the desired child element
      Returns:
        the first child node of this node with the specified name, if there is one; otherwise, return `null`.

    - #### findChildren

          public Iterator findChildren()

      Returns:
        an Iterator of all children of this node. If there are no children, an empty Iterator is returned.

    - #### findChildren

          public Iterator findChildren(String name)

      Parameters:
        `name` - Name used to select children
      Returns:
        an Iterator over all children of this node that have the specified name. If there are no such children, an empty Iterator is returned.

    - #### getBody

          public String getBody()

      Returns:
        the body text associated with this node (if any).

    - #### getName

          public String getName()

      Returns:
        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()

      Overrides:
        `toString` in class `Object`
      Returns:
        a String representation of this TreeNode.

    - #### toString

          protected void toString(StringBuffer sb,
                                  int indent,
                                  TreeNode node)

      Append to the specified StringBuffer a character representation of this node, with the specified amount of indentation.
      Parameters:
        `sb` - The StringBuffer to append to
        `indent` - Number of characters of indentation
        `node` - The TreeNode to be printed

Copyright © 2000–2023 Apache Software Foundation. All rights reserved.