Class OutputElement

java.lang.Object
org.simpleframework.xml.stream.OutputElement
All Implemented Interfaces:
Node, OutputNode

class OutputElement extends Object implements OutputNode
The OutputElement object represents an XML element. Attributes can be added to this before ant child element has been acquired from it. Once a child element has been acquired the attributes will be written an can no longer be manipulated, the same applies to any text value set for the element.
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    private String
    This is the comment that has been set on this element.
    private Mode
    This is the output mode that this element object is using.
    private String
    Represents the name of the element for this output node.
    private OutputNode
    This is the parent XML element to this output node.
    private String
    This is the namespace reference URI associated with this.
    private NamespaceMap
    This is the namespace map that contains the namespaces.
    Represents the attributes that have been set for the element.
    private String
    Represents the value that has been set for the element.
    private NodeWriter
    Used to write the start tag and attributes for the document.
  • Constructor Summary

    Constructors
    Constructor
    Description
    OutputElement(OutputNode parent, NodeWriter writer, String name)
    Constructor for the OutputElement object.
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    This will commit this element and any uncommitted elements elements that are decendents of this node.
    This returns a NodeMap which can be used to add nodes to the element before that element has been committed.
    This is used to create a child element within the element that this object represents.
    This is used to get the text comment for the element.
    The Mode is used to indicate the output mode of this node.
    Returns the name of the node that this represents.
    This returns the NamespaceMap for this node.
    This is used to acquire the Node that is the parent of this node.
    This is used to acquire the prefix for this output node.
    getPrefix(boolean inherit)
    This is used to acquire the prefix for this output node.
    This is used to acquire the namespace URI reference associated with this node.
    Returns the value for the node that this represents.
    boolean
    This is used to determine whether this node has been committed.
    boolean
    This method is used to determine if this node is the root node for the XML document.
    void
    This is used to remove any uncommitted changes.
    setAttribute(String name, String value)
    This method is used for convinience to add an attribute node to the attribute NodeMap.
    void
    setComment(String comment)
    This is used to set a text comment to the element.
    void
    setData(boolean data)
    This is used to set the output mode of this node to either be CDATA or escaped.
    void
    setMode(Mode mode)
    This is used to set the output mode of this node to either be CDATA, escaped, or inherited.
    void
    This is used to change the name of an output node.
    void
    setReference(String reference)
    This is used to set the reference for the node.
    void
    This is used to set a text value to the element.
    This is the string representation of the element.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • Field Details

    • table

      private OutputNodeMap table
      Represents the attributes that have been set for the element.
    • scope

      private NamespaceMap scope
      This is the namespace map that contains the namespaces.
    • writer

      private NodeWriter writer
      Used to write the start tag and attributes for the document.
    • parent

      private OutputNode parent
      This is the parent XML element to this output node.
    • reference

      private String reference
      This is the namespace reference URI associated with this.
    • comment

      private String comment
      This is the comment that has been set on this element.
    • value

      private String value
      Represents the value that has been set for the element.
    • name

      private String name
      Represents the name of the element for this output node.
    • mode

      private Mode mode
      This is the output mode that this element object is using.
  • Constructor Details

    • OutputElement

      public OutputElement(OutputNode parent, NodeWriter writer, String name)
      Constructor for the OutputElement object. This is used to create an output element that can create elements for an XML document. This requires the writer that is used to generate the actual document and the name of this node.
      Parameters:
      parent - this is the parent node to this output node
      writer - this is the writer used to generate the file
      name - this is the name of the element this represents
  • Method Details

    • getPrefix

      public String getPrefix()
      This is used to acquire the prefix for this output node. This will search its parent nodes until the prefix that is currently in scope is found. If a prefix is not found in the parent nodes then a prefix in the current nodes namespace mappings is searched, failing that the prefix returned is null.
      Specified by:
      getPrefix in interface OutputNode
      Returns:
      this returns the prefix associated with this node
    • getPrefix

      public String getPrefix(boolean inherit)
      This is used to acquire the prefix for this output node. If the output node is an element then this will search its parent nodes until the prefix that is currently in scope is found. If however this node is an attribute then the hierarchy of nodes is not searched as attributes to not inherit namespaces.
      Specified by:
      getPrefix in interface OutputNode
      Parameters:
      inherit - if there is no explicit prefix then inherit
      Returns:
      this returns the prefix associated with this node
    • getReference

      public String getReference()
      This is used to acquire the namespace URI reference associated with this node. Although it is recommended that the namespace reference is a URI it does not have to be, it can be any unique identifier that can be used to distinguish the qualified names.
      Specified by:
      getReference in interface OutputNode
      Returns:
      this returns the namespace URI reference for this
    • setReference

      public void setReference(String reference)
      This is used to set the reference for the node. Setting the reference implies that the node is a qualified node within the XML document. Both elements and attributes can be qualified. Depending on the prefix set on this node or, failing that, any parent node for the reference, the element will appear in the XML document with that string prefixed to the node name.
      Specified by:
      setReference in interface OutputNode
      Parameters:
      reference - this is used to set the reference for the node
    • getNamespaces

      public NamespaceMap getNamespaces()
      This returns the NamespaceMap for this node. Only an element can have namespaces, so if this node represents an attribute the elements namespaces will be provided when this is requested. By adding a namespace it becomes in scope for the current element all all child elements of that element.
      Specified by:
      getNamespaces in interface OutputNode
      Returns:
      this returns the namespaces associated with the node
    • getParent

      public OutputNode getParent()
      This is used to acquire the Node that is the parent of this node. This will return the node that is the direct parent of this node and allows for siblings to make use of nodes with their parents if required.
      Specified by:
      getParent in interface Node
      Specified by:
      getParent in interface OutputNode
      Returns:
      this returns the parent node for this node
    • getName

      public String getName()
      Returns the name of the node that this represents. This is an immutable property and cannot be changed. This will be written as the tag name when this has been committed.
      Specified by:
      getName in interface Node
      Returns:
      returns the name of the node that this represents
    • getValue

      public String getValue()
      Returns the value for the node that this represents. This is a modifiable property for the node and can be changed, however once committed any change will be irrelevant.
      Specified by:
      getValue in interface Node
      Returns:
      the name of the value for this node instance
    • getComment

      public String getComment()
      This is used to get the text comment for the element. This can be null if no comment has been set. If no comment is set on the node then no comment will be written to the resulting XML.
      Specified by:
      getComment in interface OutputNode
      Returns:
      this is the comment associated with this element
    • isRoot

      public boolean isRoot()
      This method is used to determine if this node is the root node for the XML document. The root node is the first node in the document and has no sibling nodes. This is false if the node has a parent node or a sibling node.
      Specified by:
      isRoot in interface OutputNode
      Returns:
      true if this is the root node within the document
    • getMode

      public Mode getMode()
      The Mode is used to indicate the output mode of this node. Three modes are possible, each determines how a value, if specified, is written to the resulting XML document. This is determined by the setData method which will set the output to be CDATA or escaped, if neither is specified the mode is inherited.
      Specified by:
      getMode in interface OutputNode
      Returns:
      this returns the mode of this output node object
    • setMode

      public void setMode(Mode mode)
      This is used to set the output mode of this node to either be CDATA, escaped, or inherited. If the mode is set to data then any value specified will be written in a CDATA block, if this is set to escaped values are escaped. If however this method is set to inherited then the mode is inherited from the parent node.
      Specified by:
      setMode in interface OutputNode
      Parameters:
      mode - this is the output mode to set the node to
    • getAttributes

      public OutputNodeMap getAttributes()
      This returns a NodeMap which can be used to add nodes to the element before that element has been committed. Nodes can be removed or added to the map and will appear as attributes on the written element when it is committed.
      Specified by:
      getAttributes in interface OutputNode
      Returns:
      returns the node map used to manipulate attributes
    • setComment

      public void setComment(String comment)
      This is used to set a text comment to the element. This will be written just before the actual element is written. Only a single comment can be set for each output node written.
      Specified by:
      setComment in interface OutputNode
      Parameters:
      comment - this is the comment to set on the node
    • setValue

      public void setValue(String value)
      This is used to set a text value to the element. This should be added to the element if the element contains no child elements. If the value cannot be added an exception is thrown.
      Specified by:
      setValue in interface OutputNode
      Parameters:
      value - this is the text value to add to this element
    • setName

      public void setName(String name)
      This is used to change the name of an output node. This will only affect the name of the node if the node has not yet been committed. If the node is committed then this will not be reflected in the resulting XML generated.
      Specified by:
      setName in interface OutputNode
      Parameters:
      name - this is the name to change the node to
    • setData

      public void setData(boolean data)
      This is used to set the output mode of this node to either be CDATA or escaped. If this is set to true the any value specified will be written in a CDATA block, if this is set to false the values is escaped. If however this method is never invoked then the mode is inherited from the parent.
      Specified by:
      setData in interface OutputNode
      Parameters:
      data - if true the value is written as a CDATA block
    • setAttribute

      public OutputNode setAttribute(String name, String value)
      This method is used for convinience to add an attribute node to the attribute NodeMap. The attribute added can be removed from the element by useing the node map.
      Specified by:
      setAttribute in interface OutputNode
      Parameters:
      name - this is the name of the attribute to be added
      value - this is the value of the node to be added
      Returns:
      this will return the attribute that was just set
    • getChild

      public OutputNode getChild(String name) throws Exception
      This is used to create a child element within the element that this object represents. When a new child is created with this method then the previous child is committed to the document. The created OutputNode object can be used to add attributes to the child element as well as other elements.
      Specified by:
      getChild in interface OutputNode
      Parameters:
      name - this is the name of the child element to create
      Throws:
      Exception
    • remove

      public void remove() throws Exception
      This is used to remove any uncommitted changes. Removal of an output node can only be done if it has no siblings and has not yet been committed. If the node is committed then this will throw an exception to indicate that it cannot be removed.
      Specified by:
      remove in interface OutputNode
      Throws:
      Exception - thrown if the node cannot be removed
    • commit

      public void commit() throws Exception
      This will commit this element and any uncommitted elements elements that are decendents of this node. For instance if any child or grand child remains open under this element then those elements will be closed before this is closed.
      Specified by:
      commit in interface OutputNode
      Throws:
      Exception - this is thrown if there is an I/O error
    • isCommitted

      public boolean isCommitted()
      This is used to determine whether this node has been committed. If the node is committed then no further child elements can be created from this node instance. A node is considered to be committed if a parent creates another child element or if the commit method is invoked.
      Specified by:
      isCommitted in interface OutputNode
      Returns:
      true if the node has been committed
    • toString

      public String toString()
      This is the string representation of the element. It is used for debugging purposes. When evaluating the element the to string can be used to print out the element name.
      Overrides:
      toString in class Object
      Returns:
      this returns a text description of the element