Interface IXmlElement

All Superinterfaces:
Serializable
All Known Implementing Classes:
XmlNewAbstractElement, XmlNewAbstractSpecialElt, XmlNewComment, XmlNewElement, XmlNewGroupElement, XmlNewProcessInstr, XmlNewRawElement

public interface IXmlElement extends Serializable
Interface for new xml nodes, used with the XML generator.
Since:
5.0
Author:
I. de Jong
See Also:
  • Method Details

    • addChild

      IXmlElement addChild(IXmlElement child)
      Add a child element. Only useful if the element has not yet been added as a child.
      Parameters:
      child - the new node to add as a child node (a reference will be added - any changes made to the child after it was added will be performed on the child in the XML structure too) Beware of Circular References!!!
      Returns:
      the newly added child element
    • addChildCopy

      IXmlElement addChildCopy(IXmlElement child)
      Add a child element. Only useful if the element has not yet been added as a child. Because copies are made, this method is slower (but safer) than the other add method.
      Parameters:
      child - the new node to add as a child node (a replica will be added - any changes made to the child after it was added are useless, unless you add the same object again).
      Returns:
      the newly added copy of the child element
      See Also:
    • addChildren

      void addChildren(IXmlElement[] children)
      Adds the children array to the element, it's an easy method for adding all children seperately. If the array is empty no childs are added.
      Parameters:
      children - The children array.
    • addSibling

      void addSibling(IXmlElement child, IXmlElement newSibling, boolean before)
      Add a sibling child next to a given existing child.
      Parameters:
      child - existing child node to add a new node next to
      newSibling - new node to add
      before - set to true if you want to insert before existing child, otherwise the new sibling is inserted after it
    • containsNode

      boolean containsNode(IXmlElement element)
      check if node exists in our tree - used for cycle detection.
      Parameters:
      element - The element that should be checked.
      Returns:
      boolean indicating if the element is present as a child element.
    • findAncestor

      IXmlElement findAncestor(String name)
      Find the XMLNewElement that is an ancestor of the current XMLNewElement, with the specified name. Throws exception if the ancestor is not found.
      Parameters:
      name - The tag name of the ancestor that is requested.
      Returns:
      The ancestor with the specified tag name.
      Throws:
      XmlException - when no ancestor is found or function is not supported.
    • findChildren

      List<IXmlElement> findChildren(String tagname)
      Find the elements that occurs as child (only one level deep). Returns empty list if no children are found.
      Parameters:
      tagname - The tag name for which all children are requested.
      Returns:
      The list of children matching the spacified tag name.
    • findFirstChild

      IXmlElement findFirstChild(String tagname)
      Find the first direct child with the given tag name, throws exception if it's not found.
      Parameters:
      tagname - The tag name of the child element that should be returned.
      Returns:
      The child element for the specified tag name.
      Throws:
      XmlException - This exception is thrown when no element with the specified tag-name could be found.
    • findTag

      IXmlElement findTag(String tagname)
      Get the first sub-element with a certain XML tag name.
      Parameters:
      tagname - the name of the tag
      Returns:
      the first sub-element with the given tagname
      Throws:
      XmlException - if no tag was found
    • findTags

      List<IXmlElement> findTags(String tagname)
      Make a list of all XmlNewElement elements with a certain XML tag name, recursively. The list is constructed in preorder document traversal (depth-first).
      Parameters:
      tagname - the name of the tags you seek
      Returns:
      a List containing all XmlNewElement with the tag name. It will be an empty list if no tags are found.
    • getAttribute

      String getAttribute(String name)
      Get the value of an attribute of this element.
      Parameters:
      name - the attribute name to get the value of.
      Returns:
      the value of the attribute
      Throws:
      XmlException - if attribute was not found
      See Also:
    • getAttributes

      String[] getAttributes()
      Get all attribute names of this element. If there are no attributes, returns an empty array.
      Returns:
      Array containing all the attribute names of this element.
      See Also:
    • getAttributeSafe

      String getAttributeSafe(String name)
      Get the value of an attribute of this element.
      Parameters:
      name - the attribute name to get the value of.
      Returns:
      the value of the attribute (String), or null if the attribute doesn't exist.
      See Also:
    • getAttributesMap

      Map<String,String> getAttributesMap()
      Get all attributes of this element, as an ATTRNAME-to-VALUE mapping. If there are no attributes, returns an empty Map.
      Returns:
      Map containing all the attribute names and values.
      See Also:
    • getChildren

      List<IXmlElement> getChildren()
      Return a list of all children of this element (only one level deep). This includes comment nodes, entity nodes, TEXT nodes etc. !!!!!
      Returns:
      the list of XmlNode children for this element (empty List when there are no children)
    • getNextSibling

      IXmlElement getNextSibling()
      Return the node immediately following this node. If there is no such node, this returns null. This includes comment nodes, entity nodes, TEXT nodes etc. !!!!!
      Returns:
      the node immediately following this node. If there is no such node, this returns null.
    • getFirstChild

      IXmlElement getFirstChild()
      Returns the first child of this element (only one level deep). This may be a comment node, entity node, #TEXT node etc. !!!!!
      Returns:
      the first child node of this element
      Throws:
      XmlException - if this element has no child nodes
    • getFirstElement

      IXmlElement getFirstElement()
      Returns the first element child of this element (only one level deep). This will skip comment nodes, entity nodes, #TEXT nodes etc.
      Returns:
      the first element child of this element
      Throws:
      XmlException - if this element has no element children
    • getName

      String getName()
      The name of the element (usually the XML tag).
      Returns:
      The name of the xml element.
    • setName

      void setName(String name)
      Change the tag name of an element.
      • Name can contain letters, numbers, and other characters
      • Name cannot start with a number or punctuation character
      • Name cannot start with the letters xml (or XML, or Xml, etc)
      • Name cannot contain spaces, <, >, ", ' or &
      Parameters:
      name - the name of the element.
      Throws:
      XmlException - If name is invalid.
    • getParent

      IXmlElement getParent()
      returns the parent node, raises XmlException if there is no parent.
      Returns:
      The XML element of the parent node.
      Throws:
      XmlException - This exception is thrown when no parent node is available.
    • setParent

      void setParent(IXmlElement parent)
      internal: set the parent of this node.
      Parameters:
      parent - The new parent of the element.
    • getParentSafe

      IXmlElement getParentSafe()
      returns the parent node, or null if there is no parent.
      Returns:
      The XML element of the parent node.
    • getValue

      String getValue()
      The text 'value' of the element -- easy shortcut to get tag values.
      Returns:
      The text value of the element.
    • hasAttributes

      boolean hasAttributes()
      Shortcut method to quickly see if there are any attributes.
      Returns:
      Boolean indicating if this element has any attributes.
    • isCData

      boolean isCData()
      This method returns a boolean indicating if the value will be wrapped in a CDATA block.
      Returns:
      Boolean indicating if the value will be wrapped in a CDATA block
    • setCData

      void setCData(boolean enable)
      Enable (or disable) CDATA representation. CDATA mode outputs unescaped data in <![CDATA[ ... ]]> delimiters. Note that this has no effect on parsing because they will process the CDATA block automatically. You only change the output representation of this element's value.
      Parameters:
      enable - enable CDATA representation? true, false=disable.
    • removeAllChildren

      IXmlElement[] removeAllChildren()
      remove all child nodes.
      Returns:
      Array containing the children that were removed.
    • removeAttribute

      String removeAttribute(String name)
      This method removes the attribute with the specified name. When there was no attribute specified for the given name, this method has no effect. The attribute name is case sensitive.
      Parameters:
      name - The name of the attribute that should be removed.
      Returns:
      The previous value of the attribute that has been removed.
    • removeChild

      void removeChild(IXmlElement childNode)
      remove a child node.
      Parameters:
      childNode - node to remove
    • replaceChild

      void replaceChild(IXmlElement oldChild, IXmlElement newChild)
      replace a child with a new child.
      Parameters:
      oldChild - child node to replace
      newChild - child node to replace with
    • setAttribute

      String setAttribute(String name, String stringValue)
      Set an attribute for this element, name=value. Only useful if the element has not yet been added as a child
      • Name can contain letters, numbers, and other characters
      • Name cannot contain spaces, <, >, ", ' or &
      • Value cannot be null
      Parameters:
      name - The name of the attribute that should be set.
      stringValue - The value of the attribute.
      Returns:
      The previous value of the attribute, may be null.
      Throws:
      XmlException - If name or value is invalid.
    • setValue

      void setValue(boolean booleanValue)
      change the value to a new boolean (true/false).
      Parameters:
      booleanValue - The new boolean value.
    • setValue

      void setValue(Date dateValue)
      change the value to a new Date (XSD/ISO notation: YYYY-MM-DDTHH:mm:ss).
      Parameters:
      dateValue - The new date value.
    • setValue

      void setValue(double doubleValue)
      change the value to a new double (default number of digits after decimal point).
      Parameters:
      doubleValue - The new double value.
    • setValue

      void setValue(int integerValue)
      change the value to a new int.
      Parameters:
      integerValue - The new integer value.
    • setValue

      void setValue(long longValue)
      change the value to a new long.
      Parameters:
      longValue - The new long value.
    • setValue

      void setValue(String stringValue)
      Change the text value of an element. Be careful if your node has already been added to a tree.
      Parameters:
      stringValue - The new value for the element.
    • setValue

      void setValue(XmlGenerator gen)
      change the value to be another full XML document (not indented). You might want to consider setting CDATA for this element if you use this.
      Parameters:
      gen - The XML element that should entirely be included as value.
    • setValue

      void setValue(byte[] rawValue, String encoding)
      Change the value. Only useful if the element has not yet been added as a child.
      Parameters:
      rawValue - the raw byte array of the new value
      encoding - the character encoding used for the byte array
    • setValue

      void setValue(Date dateValue, boolean withTime)
      change the value to a new Date (XSD/ISO notation: YYYY-MM-DDTHH:mm:ss) with or without time.
      Parameters:
      dateValue - The new date value.
      withTime - boolean indicating if the time should be included in the value.
    • setValue

      void setValue(double doubleValue, int digits)
      change the value to a new double (with specified number of digits after the decimal point).
      Parameters:
      doubleValue - The new double value.
      digits - The number of digits that should be included.
    • toXmlFragment

      String toXmlFragment()
      Easy way to create an XML string for this element and the children. Indent starts at 0. The toXMLfragment method operating on a StringBuffer is faster and better suited when creating only a part of a larger document. This method returns a string and was designed to get the "final" representation. It uses whitespace indentation for pretty printing.
      Returns:
      String containing the XML of this element and children.
    • toXmlFragment

      String toXmlFragment(boolean useIndentation)
      Easy way to create an XML string for this element and the children. Indent starts at 0. The toXMLfragment method operating on a StringBuffer is faster and better suited when creating only a part of a larger document. This method returns a string and was designed to get the "final" representation.
      Parameters:
      useIndentation - true to use whitespace indentation for pretty printing, false to avoid any whitespace between XML elements
      Returns:
      String containing the XML of this element and children.
    • toXmlFragment

      void toXmlFragment(boolean useIndentation, boolean sortAttributes, int level, StringBuffer str)
      Recursive conversion to an XML document. XML problem chars will be escaped (",<,>, etc). The XML code is appended to a stringbuffer. It uses indentation for pretty printing. Indentation starts at 0.
      Parameters:
      useIndentation - true to use whitespace indentation for pretty printing, false to avoid any whitespace between XML elements
      sortAttributes - true to use sort the attributes by name in alphabetic order.
      level - indentation level (tabs), start with 0 (unused if useIndentation is false)
      str - existing StringBuffer to append into
    • toXmlFragment

      void toXmlFragment(int level, StringBuffer str)
      Recursive conversion to an XML document. XML problem chars will be escaped (",<,>, etc). The XML code is appended to a stringbuffer. It uses indentation for pretty printing.
      Parameters:
      level - indentation level (tabs), start with 0
      str - existing StringBuffer to append into