Class XMLElement


  • public class XMLElement
    extends Object
    XMLElement is a representation of an XML object. The object is able to parse XML code.

    Parsing XML Data
    You can parse XML data using the following code:
      XMLElement xml = new XMLElement();
      FileReader reader = new FileReader("filename.xml");
      xml.parseFromReader(reader);
    Retrieving Attributes
    You can enumerate the attributes of an element using the method enumerateAttributeNames. The attribute values can be retrieved using the method getStringAttribute. The following example shows how to list the attributes of an element:
      XMLElement element = ...;
      Enumeration enum = element.getAttributeNames();
      while (enum.hasMoreElements()) {
          String key = (String) enum.nextElement();
          String value = element.getStringAttribute(key);
          System.out.println(key + " = " + value);
      }
    Retrieving Child Elements
    You can enumerate the children of an element using enumerateChildren. The number of child elements can be retrieved using countChildren.
    Elements Containing Character Data
    If an elements contains character data, like in the following example:
      <title>The Title</title>
    you can retrieve that data using the method getContent.
    Subclassing XMLElement
    When subclassing XMLElement, you need to override the method createAnotherElement which has to return a new copy of the receiver.

    see nanoxml.XMLParseException

    • Field Detail

      • NANOXML_MAJOR_VERSION

        public static final int NANOXML_MAJOR_VERSION
        Major version of NanoXML. Classes with the same major and minor version are binary compatible. Classes with the same major version are source compatible. If the major version is different, you may need to modify the client source code. see nanoxml.XMLElement#NANOXML_MINOR_VERSION
        See Also:
        Constant Field Values
      • NANOXML_MINOR_VERSION

        public static final int NANOXML_MINOR_VERSION
        Minor version of NanoXML. Classes with the same major and minor version are binary compatible. Classes with the same major version are source compatible. If the major version is different, you may need to modify the client source code. see nanoxml.XMLElement#NANOXML_MAJOR_VERSION
        See Also:
        Constant Field Values
    • Constructor Detail

      • XMLElement

        public XMLElement()
        Creates and initializes a new XML element. Calling the construction is equivalent to:
          new XMLElement(new Hashtable(), false, true)
        Postconditions:
        • countChildren() => 0
        • enumerateChildren() => empty enumeration
        • enumeratePropertyNames() => empty enumeration
        • getChildren() => empty vector
        • getContent() => ""
        • getLineNr() => 0
        • getName() => null
        see nanoxml.XMLElement#XMLElement(java.util.Hashtable) XMLElement(Hashtable) see nanoxml.XMLElement#XMLElement(boolean) see nanoxml.XMLElement#XMLElement(java.util.Hashtable,boolean) XMLElement(Hashtable, boolean)
      • XMLElement

        public XMLElement​(Hashtable entities)
        Creates and initializes a new XML element. Calling the construction is equivalent to:
          new XMLElement(entities, false, true)
        Parameters:
        entities - The entity conversion table.
        Preconditions:
        • entities != null
        Postconditions:
        • countChildren() => 0
        • enumerateChildren() => empty enumeration
        • enumeratePropertyNames() => empty enumeration
        • getChildren() => empty vector
        • getContent() => ""
        • getLineNr() => 0
        • getName() => null
        see nanoxml.XMLElement#XMLElement() see nanoxml.XMLElement#XMLElement(boolean) see nanoxml.XMLElement#XMLElement(java.util.Hashtable,boolean) XMLElement(Hashtable, boolean)
      • XMLElement

        public XMLElement​(boolean skipLeadingWhitespace)
        Creates and initializes a new XML element. Calling the construction is equivalent to:
          new XMLElement(new Hashtable(), skipLeadingWhitespace, true)
        Parameters:
        skipLeadingWhitespace - true if leading and trailing whitespace in PCDATA content has to be removed.
        Postconditions:
        • countChildren() => 0
        • enumerateChildren() => empty enumeration
        • enumeratePropertyNames() => empty enumeration
        • getChildren() => empty vector
        • getContent() => ""
        • getLineNr() => 0
        • getName() => null
        see nanoxml.XMLElement#XMLElement() see nanoxml.XMLElement#XMLElement(java.util.Hashtable) XMLElement(Hashtable) see nanoxml.XMLElement#XMLElement(java.util.Hashtable,boolean) XMLElement(Hashtable, boolean)
      • XMLElement

        public XMLElement​(Hashtable entities,
                          boolean skipLeadingWhitespace)
        Creates and initializes a new XML element. Calling the construction is equivalent to:
          new XMLElement(entities, skipLeadingWhitespace, true)
        Parameters:
        entities - The entity conversion table.
        skipLeadingWhitespace - true if leading and trailing whitespace in PCDATA content has to be removed.
        Preconditions:
        • entities != null
        Postconditions:
        • countChildren() => 0
        • enumerateChildren() => empty enumeration
        • enumeratePropertyNames() => empty enumeration
        • getChildren() => empty vector
        • getContent() => ""
        • getLineNr() => 0
        • getName() => null
        see nanoxml.XMLElement#XMLElement() see nanoxml.XMLElement#XMLElement(boolean) see nanoxml.XMLElement#XMLElement(java.util.Hashtable) XMLElement(Hashtable)
      • XMLElement

        public XMLElement​(Hashtable entities,
                          boolean skipLeadingWhitespace,
                          boolean ignoreCase)
        Creates and initializes a new XML element.
        Parameters:
        entities - The entity conversion table.
        skipLeadingWhitespace - true if leading and trailing whitespace in PCDATA content has to be removed.
        ignoreCase - true if the case of element and attribute names have to be ignored.
        Preconditions:
        • entities != null
        Postconditions:
        • countChildren() => 0
        • enumerateChildren() => empty enumeration
        • enumeratePropertyNames() => empty enumeration
        • getChildren() => empty vector
        • getContent() => ""
        • getLineNr() => 0
        • getName() => null
        see nanoxml.XMLElement#XMLElement() see nanoxml.XMLElement#XMLElement(boolean) see nanoxml.XMLElement#XMLElement(java.util.Hashtable) XMLElement(Hashtable) see nanoxml.XMLElement#XMLElement(java.util.Hashtable,boolean) XMLElement(Hashtable, boolean)
      • XMLElement

        protected XMLElement​(Hashtable entities,
                             boolean skipLeadingWhitespace,
                             boolean fillBasicConversionTable,
                             boolean ignoreCase)
        Creates and initializes a new XML element.

        This constructor should only be called from createAnotherElement to create child elements.

        Parameters:
        entities - The entity conversion table.
        skipLeadingWhitespace - true if leading and trailing whitespace in PCDATA content has to be removed.
        fillBasicConversionTable - true if the basic entities need to be added to the entity list.
        ignoreCase - true if the case of element and attribute names have to be ignored.
        Preconditions:
        • entities != null
        • if fillBasicConversionTable == false then entities contains at least the following entries: amp, lt, gt, apos and quot
        Postconditions:
        • countChildren() => 0
        • enumerateChildren() => empty enumeration
        • enumeratePropertyNames() => empty enumeration
        • getChildren() => empty vector
        • getContent() => ""
        • getLineNr() => 0
        • getName() => null
        see nanoxml.XMLElement#createAnotherElement()
    • Method Detail

      • addChild

        public void addChild​(XMLElement child)
        Adds a child element.
        Parameters:
        child - The child element to add.
        Preconditions:
        • child != null
        • child.getName() != null
        • child does not have a parent element
        Postconditions:
        • countChildren() => old.countChildren() + 1
        • enumerateChildren() => old.enumerateChildren() + child
        • getChildren() => old.enumerateChildren() + child
        see nanoxml.XMLElement#countChildren() see nanoxml.XMLElement#enumerateChildren() see nanoxml.XMLElement#getChildren() see nanoxml.XMLElement#removeChild(nanoxml.XMLElement) removeChild(XMLElement)
      • setAttribute

        public void setAttribute​(String name,
                                 Object value)
        Adds or modifies an attribute.
        Parameters:
        name - The name of the attribute.
        value - The value of the attribute.
        Preconditions:
        • name != null
        • name is a valid XML identifier
        • value != null
        Postconditions:
        • enumerateAttributeNames() => old.enumerateAttributeNames() + name
        • getAttribute(name) => value
        see nanoxml.XMLElement#setDoubleAttribute(java.lang.String, double) setDoubleAttribute(String, double) see nanoxml.XMLElement#setIntAttribute(java.lang.String, int) setIntAttribute(String, int) see nanoxml.XMLElement#enumerateAttributeNames() see nanoxml.XMLElement#getAttribute(java.lang.String) getAttribute(String) see nanoxml.XMLElement#getAttribute(java.lang.String, java.lang.Object) getAttribute(String, Object) see nanoxml.XMLElement#getAttribute(java.lang.String, java.util.Hashtable, java.lang.String, boolean) getAttribute(String, Hashtable, String, boolean) see nanoxml.XMLElement#getStringAttribute(java.lang.String) getStringAttribute(String) see nanoxml.XMLElement#getStringAttribute(java.lang.String, java.lang.String) getStringAttribute(String, String) see nanoxml.XMLElement#getStringAttribute(java.lang.String, java.util.Hashtable, java.lang.String, boolean) getStringAttribute(String, Hashtable, String, boolean)
      • addProperty

        public void addProperty​(String name,
                                Object value)
        Deprecated.
        Use setAttribute instead.
        Adds or modifies an attribute.
        Parameters:
        name - The name of the attribute.
        value - The value of the attribute.
      • setIntAttribute

        public void setIntAttribute​(String name,
                                    int value)
        Adds or modifies an attribute.
        Parameters:
        name - The name of the attribute.
        value - The value of the attribute.
        Preconditions:
        • name != null
        • name is a valid XML identifier
        Postconditions:
        • enumerateAttributeNames() => old.enumerateAttributeNames() + name
        • getIntAttribute(name) => value
        see nanoxml.XMLElement#setDoubleAttribute(java.lang.String, double) setDoubleAttribute(String, double) see nanoxml.XMLElement#setAttribute(java.lang.String, java.lang.Object) setAttribute(String, Object) see nanoxml.XMLElement#removeAttribute(java.lang.String) removeAttribute(String) see nanoxml.XMLElement#enumerateAttributeNames() see nanoxml.XMLElement#getIntAttribute(java.lang.String) getIntAttribute(String) see nanoxml.XMLElement#getIntAttribute(java.lang.String, int) getIntAttribute(String, int) see nanoxml.XMLElement#getIntAttribute(java.lang.String, java.util.Hashtable, java.lang.String, boolean) getIntAttribute(String, Hashtable, String, boolean)
      • addProperty

        public void addProperty​(String key,
                                int value)
        Deprecated.
        Use setIntAttribute instead.
        Adds or modifies an attribute.
        Parameters:
        key - The name of the attribute.
        value - The value of the attribute.
      • setDoubleAttribute

        public void setDoubleAttribute​(String name,
                                       double value)
        Adds or modifies an attribute.
        Parameters:
        name - The name of the attribute.
        value - The value of the attribute.
        Preconditions:
        • name != null
        • name is a valid XML identifier
        Postconditions:
        • enumerateAttributeNames() => old.enumerateAttributeNames() + name
        • getDoubleAttribute(name) => value
        see nanoxml.XMLElement#setIntAttribute(java.lang.String, int) setIntAttribute(String, int) see nanoxml.XMLElement#setAttribute(java.lang.String, java.lang.Object) setAttribute(String, Object) see nanoxml.XMLElement#removeAttribute(java.lang.String) removeAttribute(String) see nanoxml.XMLElement#enumerateAttributeNames() see nanoxml.XMLElement#getDoubleAttribute(java.lang.String) getDoubleAttribute(String) see nanoxml.XMLElement#getDoubleAttribute(java.lang.String, double) getDoubleAttribute(String, double) see nanoxml.XMLElement#getDoubleAttribute(java.lang.String, java.util.Hashtable, java.lang.String, boolean) getDoubleAttribute(String, Hashtable, String, boolean)
      • addProperty

        public void addProperty​(String name,
                                double value)
        Deprecated.
        Use setDoubleAttribute instead.
        Adds or modifies an attribute.
        Parameters:
        name - The name of the attribute.
        value - The value of the attribute.
      • countChildren

        public int countChildren()
        Returns the number of child elements of the element.
        Postconditions:
        • result >= 0
        see nanoxml.XMLElement#addChild(nanoxml.XMLElement) addChild(XMLElement) see nanoxml.XMLElement#enumerateChildren() see nanoxml.XMLElement#getChildren() see nanoxml.XMLElement#removeChild(nanoxml.XMLElement) removeChild(XMLElement)
      • enumerateAttributeNames

        public Enumeration enumerateAttributeNames()
        Enumerates the attribute names.
        Postconditions:
        • result != null
        see nanoxml.XMLElement#setDoubleAttribute(java.lang.String, double) setDoubleAttribute(String, double) see nanoxml.XMLElement#setIntAttribute(java.lang.String, int) setIntAttribute(String, int) see nanoxml.XMLElement#setAttribute(java.lang.String, java.lang.Object) setAttribute(String, Object) see nanoxml.XMLElement#removeAttribute(java.lang.String) removeAttribute(String) see nanoxml.XMLElement#getAttribute(java.lang.String) getAttribute(String) see nanoxml.XMLElement#getAttribute(java.lang.String, java.lang.Object) getAttribute(String, String) see nanoxml.XMLElement#getAttribute(java.lang.String, java.util.Hashtable, java.lang.String, boolean) getAttribute(String, Hashtable, String, boolean) see nanoxml.XMLElement#getStringAttribute(java.lang.String) getStringAttribute(String) see nanoxml.XMLElement#getStringAttribute(java.lang.String, java.lang.String) getStringAttribute(String, String) see nanoxml.XMLElement#getStringAttribute(java.lang.String, java.util.Hashtable, java.lang.String, boolean) getStringAttribute(String, Hashtable, String, boolean) see nanoxml.XMLElement#getIntAttribute(java.lang.String) getIntAttribute(String) see nanoxml.XMLElement#getIntAttribute(java.lang.String, int) getIntAttribute(String, int) see nanoxml.XMLElement#getIntAttribute(java.lang.String, java.util.Hashtable, java.lang.String, boolean) getIntAttribute(String, Hashtable, String, boolean) see nanoxml.XMLElement#getDoubleAttribute(java.lang.String) getDoubleAttribute(String) see nanoxml.XMLElement#getDoubleAttribute(java.lang.String, double) getDoubleAttribute(String, double) see nanoxml.XMLElement#getDoubleAttribute(java.lang.String, java.util.Hashtable, java.lang.String, boolean) getDoubleAttribute(String, Hashtable, String, boolean) see nanoxml.XMLElement#getBooleanAttribute(java.lang.String, java.lang.String, java.lang.String, boolean) getBooleanAttribute(String, String, String, boolean)
      • enumerateChildren

        public Enumeration enumerateChildren()
        Enumerates the child elements.
        Postconditions:
        • result != null
        see nanoxml.XMLElement#addChild(nanoxml.XMLElement) addChild(XMLElement) see nanoxml.XMLElement#countChildren() see nanoxml.XMLElement#getChildren() see nanoxml.XMLElement#removeChild(nanoxml.XMLElement) removeChild(XMLElement)
      • getChildren

        public Vector getChildren()
        Returns the child elements as a Vector. It is safe to modify this Vector.
        Postconditions:
        • result != null
        see nanoxml.XMLElement#addChild(nanoxml.XMLElement) addChild(XMLElement) see nanoxml.XMLElement#countChildren() see nanoxml.XMLElement#enumerateChildren() see nanoxml.XMLElement#removeChild(nanoxml.XMLElement) removeChild(XMLElement)
      • getContents

        public String getContents()
        Deprecated.
        Use getContent instead.
        Returns the PCDATA content of the object. If there is no such content, null is returned.
      • getContent

        public String getContent()
        Returns the PCDATA content of the object. If there is no such content, null is returned. see nanoxml.XMLElement#setContent(java.lang.String) setContent(String)
      • getLineNr

        public int getLineNr()
        Returns the line nr in the source data on which the element is found. This method returns 0 there is no associated source data.
        Postconditions:
        • result >= 0
      • getAttribute

        public Object getAttribute​(String name)
        Returns an attribute of the element. If the attribute doesn't exist, null is returned.
        Parameters:
        name - The name of the attribute.
        Preconditions:
        • name != null
        • name is a valid XML identifier
        see nanoxml.XMLElement#setAttribute(java.lang.String, java.lang.Object) setAttribute(String, Object) see nanoxml.XMLElement#removeAttribute(java.lang.String) removeAttribute(String) see nanoxml.XMLElement#enumerateAttributeNames() see nanoxml.XMLElement#getAttribute(java.lang.String, java.lang.Object) getAttribute(String, Object) see nanoxml.XMLElement#getAttribute(java.lang.String, java.util.Hashtable, java.lang.String, boolean) getAttribute(String, Hashtable, String, boolean)
      • getAttribute

        public Object getAttribute​(String name,
                                   Object defaultValue)
        Returns an attribute of the element. If the attribute doesn't exist, defaultValue is returned.
        Parameters:
        name - The name of the attribute.
        defaultValue - Key to use if the attribute is missing.
        Preconditions:
        • name != null
        • name is a valid XML identifier
        see nanoxml.XMLElement#setAttribute(java.lang.String, java.lang.Object) setAttribute(String, Object) see nanoxml.XMLElement#removeAttribute(java.lang.String) removeAttribute(String) see nanoxml.XMLElement#enumerateAttributeNames() see nanoxml.XMLElement#getAttribute(java.lang.String) getAttribute(String) see nanoxml.XMLElement#getAttribute(java.lang.String, java.util.Hashtable, java.lang.String, boolean) getAttribute(String, Hashtable, String, boolean)
      • getAttribute

        public Object getAttribute​(String name,
                                   Hashtable valueSet,
                                   String defaultKey,
                                   boolean allowLiterals)
        Returns an attribute by looking up a key in a hashtable. If the attribute doesn't exist, the value corresponding to defaultKey is returned.

        As an example, if valueSet contains the mapping "one" => "1" and the element contains the attribute attr="one", then getAttribute("attr", mapping, defaultKey, false) returns "1".

        Parameters:
        name - The name of the attribute.
        valueSet - Hashtable mapping keys to values.
        defaultKey - Key to use if the attribute is missing.
        allowLiterals - true if literals are valid.
        Preconditions:
        • name != null
        • name is a valid XML identifier
        • valueSet != null
        • the keys of valueSet are strings
        see nanoxml.XMLElement#setAttribute(java.lang.String, java.lang.Object) setAttribute(String, Object) see nanoxml.XMLElement#removeAttribute(java.lang.String) removeAttribute(String) see nanoxml.XMLElement#enumerateAttributeNames() see nanoxml.XMLElement#getAttribute(java.lang.String) getAttribute(String) see nanoxml.XMLElement#getAttribute(java.lang.String, java.lang.Object) getAttribute(String, Object)
      • getStringAttribute

        public String getStringAttribute​(String name)
        Returns an attribute of the element. If the attribute doesn't exist, null is returned.
        Parameters:
        name - The name of the attribute.
        Preconditions:
        • name != null
        • name is a valid XML identifier
        see nanoxml.XMLElement#setAttribute(java.lang.String, java.lang.Object) setAttribute(String, Object) see nanoxml.XMLElement#removeAttribute(java.lang.String) removeAttribute(String) see nanoxml.XMLElement#enumerateAttributeNames() see nanoxml.XMLElement#getStringAttribute(java.lang.String, java.lang.String) getStringAttribute(String, String) see nanoxml.XMLElement#getStringAttribute(java.lang.String, java.util.Hashtable, java.lang.String, boolean) getStringAttribute(String, Hashtable, String, boolean)
      • getStringAttribute

        public String getStringAttribute​(String name,
                                         String defaultValue)
        Returns an attribute of the element. If the attribute doesn't exist, defaultValue is returned.
        Parameters:
        name - The name of the attribute.
        defaultValue - Key to use if the attribute is missing.
        Preconditions:
        • name != null
        • name is a valid XML identifier
        see nanoxml.XMLElement#setAttribute(java.lang.String, java.lang.Object) setAttribute(String, Object) see nanoxml.XMLElement#removeAttribute(java.lang.String) removeAttribute(String) see nanoxml.XMLElement#enumerateAttributeNames() see nanoxml.XMLElement#getStringAttribute(java.lang.String) getStringAttribute(String) see nanoxml.XMLElement#getStringAttribute(java.lang.String, java.util.Hashtable, java.lang.String, boolean) getStringAttribute(String, Hashtable, String, boolean)
      • getStringAttribute

        public String getStringAttribute​(String name,
                                         Hashtable valueSet,
                                         String defaultKey,
                                         boolean allowLiterals)
        Returns an attribute by looking up a key in a hashtable. If the attribute doesn't exist, the value corresponding to defaultKey is returned.

        As an example, if valueSet contains the mapping "one" => "1" and the element contains the attribute attr="one", then getAttribute("attr", mapping, defaultKey, false) returns "1".

        Parameters:
        name - The name of the attribute.
        valueSet - Hashtable mapping keys to values.
        defaultKey - Key to use if the attribute is missing.
        allowLiterals - true if literals are valid.
        Preconditions:
        • name != null
        • name is a valid XML identifier
        • valueSet != null
        • the keys of valueSet are strings
        • the values of valueSet are strings
        see nanoxml.XMLElement#setAttribute(java.lang.String, java.lang.Object) setAttribute(String, Object) see nanoxml.XMLElement#removeAttribute(java.lang.String) removeAttribute(String) see nanoxml.XMLElement#enumerateAttributeNames() see nanoxml.XMLElement#getStringAttribute(java.lang.String) getStringAttribute(String) see nanoxml.XMLElement#getStringAttribute(java.lang.String, java.lang.String) getStringAttribute(String, String)
      • getIntAttribute

        public int getIntAttribute​(String name)
        Returns an attribute of the element. If the attribute doesn't exist, 0 is returned.
        Parameters:
        name - The name of the attribute.
        Preconditions:
        • name != null
        • name is a valid XML identifier
        see nanoxml.XMLElement#setIntAttribute(java.lang.String, int) setIntAttribute(String, int) see nanoxml.XMLElement#enumerateAttributeNames() see nanoxml.XMLElement#getIntAttribute(java.lang.String, int) getIntAttribute(String, int) see nanoxml.XMLElement#getIntAttribute(java.lang.String, java.util.Hashtable, java.lang.String, boolean) getIntAttribute(String, Hashtable, String, boolean)
      • getIntAttribute

        public int getIntAttribute​(String name,
                                   int defaultValue)
        Returns an attribute of the element. If the attribute doesn't exist, defaultValue is returned.
        Parameters:
        name - The name of the attribute.
        defaultValue - Key to use if the attribute is missing.
        Preconditions:
        • name != null
        • name is a valid XML identifier
        see nanoxml.XMLElement#setIntAttribute(java.lang.String, int) setIntAttribute(String, int) see nanoxml.XMLElement#enumerateAttributeNames() see nanoxml.XMLElement#getIntAttribute(java.lang.String) getIntAttribute(String) see nanoxml.XMLElement#getIntAttribute(java.lang.String, java.util.Hashtable, java.lang.String, boolean) getIntAttribute(String, Hashtable, String, boolean)
      • getIntAttribute

        public int getIntAttribute​(String name,
                                   Hashtable valueSet,
                                   String defaultKey,
                                   boolean allowLiteralNumbers)
        Returns an attribute by looking up a key in a hashtable. If the attribute doesn't exist, the value corresponding to defaultKey is returned.

        As an example, if valueSet contains the mapping "one" => 1 and the element contains the attribute attr="one", then getIntAttribute("attr", mapping, defaultKey, false) returns 1.

        Parameters:
        name - The name of the attribute.
        valueSet - Hashtable mapping keys to values.
        defaultKey - Key to use if the attribute is missing.
        allowLiteralNumbers - true if literal numbers are valid.
        Preconditions:
        • name != null
        • name is a valid XML identifier
        • valueSet != null
        • the keys of valueSet are strings
        • the values of valueSet are Integer objects
        • defaultKey is either null, a key in valueSet or an integer.
        see nanoxml.XMLElement#setIntAttribute(java.lang.String, int) setIntAttribute(String, int) see nanoxml.XMLElement#enumerateAttributeNames() see nanoxml.XMLElement#getIntAttribute(java.lang.String) getIntAttribute(String) see nanoxml.XMLElement#getIntAttribute(java.lang.String, int) getIntAttribute(String, int)
      • getDoubleAttribute

        public double getDoubleAttribute​(String name)
        Returns an attribute of the element. If the attribute doesn't exist, 0.0 is returned.
        Parameters:
        name - The name of the attribute.
        Preconditions:
        • name != null
        • name is a valid XML identifier
        see nanoxml.XMLElement#setDoubleAttribute(java.lang.String, double) setDoubleAttribute(String, double) see nanoxml.XMLElement#enumerateAttributeNames() see nanoxml.XMLElement#getDoubleAttribute(java.lang.String, double) getDoubleAttribute(String, double) see nanoxml.XMLElement#getDoubleAttribute(java.lang.String, java.util.Hashtable, java.lang.String, boolean) getDoubleAttribute(String, Hashtable, String, boolean)
      • getDoubleAttribute

        public double getDoubleAttribute​(String name,
                                         double defaultValue)
        Returns an attribute of the element. If the attribute doesn't exist, defaultValue is returned.
        Parameters:
        name - The name of the attribute.
        defaultValue - Key to use if the attribute is missing.
        Preconditions:
        • name != null
        • name is a valid XML identifier
        see nanoxml.XMLElement#setDoubleAttribute(java.lang.String, double) setDoubleAttribute(String, double) see nanoxml.XMLElement#enumerateAttributeNames() see nanoxml.XMLElement#getDoubleAttribute(java.lang.String) getDoubleAttribute(String) see nanoxml.XMLElement#getDoubleAttribute(java.lang.String, java.util.Hashtable, java.lang.String, boolean) getDoubleAttribute(String, Hashtable, String, boolean)
      • getDoubleAttribute

        public double getDoubleAttribute​(String name,
                                         Hashtable valueSet,
                                         String defaultKey,
                                         boolean allowLiteralNumbers)
        Returns an attribute by looking up a key in a hashtable. If the attribute doesn't exist, the value corresponding to defaultKey is returned.

        As an example, if valueSet contains the mapping "one" => 1.0 and the element contains the attribute attr="one", then getDoubleAttribute("attr", mapping, defaultKey, false) returns 1.0.

        Parameters:
        name - The name of the attribute.
        valueSet - Hashtable mapping keys to values.
        defaultKey - Key to use if the attribute is missing.
        allowLiteralNumbers - true if literal numbers are valid.
        Preconditions:
        • name != null
        • name is a valid XML identifier
        • valueSet != null
        • the keys of valueSet are strings
        • the values of valueSet are Double objects
        • defaultKey is either null, a key in valueSet or a double.
        see nanoxml.XMLElement#setDoubleAttribute(java.lang.String, double) setDoubleAttribute(String, double) see nanoxml.XMLElement#enumerateAttributeNames() see nanoxml.XMLElement#getDoubleAttribute(java.lang.String) getDoubleAttribute(String) see nanoxml.XMLElement#getDoubleAttribute(java.lang.String, double) getDoubleAttribute(String, double)
      • getBooleanAttribute

        public boolean getBooleanAttribute​(String name,
                                           String trueValue,
                                           String falseValue,
                                           boolean defaultValue)
        Returns an attribute of the element. If the attribute doesn't exist, defaultValue is returned. If the value of the attribute is equal to trueValue, true is returned. If the value of the attribute is equal to falseValue, false is returned. If the value doesn't match trueValue or falseValue, an exception is thrown.
        Parameters:
        name - The name of the attribute.
        trueValue - The value associated with true.
        falseValue - The value associated with true.
        defaultValue - Value to use if the attribute is missing.
        Preconditions:
        • name != null
        • name is a valid XML identifier
        • trueValue and falseValue are different strings.
        see nanoxml.XMLElement#setAttribute(java.lang.String, java.lang.Object) setAttribute(String, Object) see nanoxml.XMLElement#removeAttribute(java.lang.String) removeAttribute(String) see nanoxml.XMLElement#enumerateAttributeNames()
      • getIntProperty

        public int getIntProperty​(String name,
                                  Hashtable valueSet,
                                  String defaultKey)
        Deprecated.
        Use getIntAttribute instead.
        Returns an attribute by looking up a key in a hashtable.
      • getProperty

        public int getProperty​(String name,
                               int defaultValue)
        Deprecated.
        Use getIntAttribute instead.
        Returns an attribute.
      • getProperty

        public double getProperty​(String name,
                                  double defaultValue)
        Deprecated.
        Use getDoubleAttribute instead.
        Returns an attribute.
      • getProperty

        public boolean getProperty​(String key,
                                   String trueValue,
                                   String falseValue,
                                   boolean defaultValue)
        Deprecated.
        Use getBooleanAttribute instead.
        Returns an attribute.
      • getSpecialIntProperty

        public int getSpecialIntProperty​(String name,
                                         Hashtable valueSet,
                                         String defaultKey)
        Deprecated.
        Use getIntAttribute instead.
        Returns an attribute by looking up a key in a hashtable.
      • getSpecialDoubleProperty

        public double getSpecialDoubleProperty​(String name,
                                               Hashtable valueSet,
                                               String defaultKey)
        Deprecated.
        Use getDoubleAttribute instead.
        Returns an attribute by looking up a key in a hashtable.
      • getName

        public String getName()
        Returns the name of the element. see nanoxml.XMLElement#setName(java.lang.String) setName(String)
      • getTagName

        public String getTagName()
        Deprecated.
        Use getName instead.
        Returns the name of the element.
      • parseFromReader

        public void parseFromReader​(Reader reader)
                             throws IOException,
                                    XMLParseException
        Reads one XML element from a java.io.Reader and parses it.
        Parameters:
        reader - The reader from which to retrieve the XML data.
        Preconditions:
        • reader != null
        • reader is not closed
        Postconditions:
        • the state of the receiver is updated to reflect the XML element parsed from the reader
        • the reader points to the first character following the last '>' character of the XML element
        Throws:
        IOException - If an error occured while reading the input. throws nanoxml.XMLParseException If an error occured while parsing the read data.
        XMLParseException
      • parseFromReader

        public void parseFromReader​(Reader reader,
                                    int startingLineNr)
                             throws IOException,
                                    XMLParseException
        Reads one XML element from a java.io.Reader and parses it.
        Parameters:
        reader - The reader from which to retrieve the XML data.
        startingLineNr - The line number of the first line in the data.
        Preconditions:
        • reader != null
        • reader is not closed
        Postconditions:
        • the state of the receiver is updated to reflect the XML element parsed from the reader
        • the reader points to the first character following the last '>' character of the XML element
        Throws:
        IOException - If an error occured while reading the input. throws nanoxml.XMLParseException If an error occured while parsing the read data.
        XMLParseException
      • parseString

        public void parseString​(String string)
                         throws XMLParseException
        Reads one XML element from a String and parses it.
        Parameters:
        string - The of the XML data.
        Preconditions:
        • string != null
        • string.length() > 0
        Postconditions:
        • the state of the receiver is updated to reflect the XML element parsed from the reader
        throws nanoxml.XMLParseException If an error occured while parsing the string.
        Throws:
        XMLParseException
      • parseString

        public void parseString​(String string,
                                int offset)
                         throws XMLParseException
        Reads one XML element from a String and parses it.
        Parameters:
        string - The string ofthe XML data.
        offset - The first character in string to scan.
        Preconditions:
        • string != null
        • offset < string.length()
        • offset >= 0
        Postconditions:
        • the state of the receiver is updated to reflect the XML element parsed from the reader
        throws nanoxml.XMLParseException If an error occured while parsing the string.
        Throws:
        XMLParseException
      • parseString

        public void parseString​(String string,
                                int offset,
                                int end)
                         throws XMLParseException
        Reads one XML element from a String and parses it.
        Parameters:
        string - The string of the the XML data.
        offset - The first character in string to scan.
        end - The character where to stop scanning. This character is not scanned.
        Preconditions:
        • string != null
        • end <= string.length()
        • offset < end
        • offset >= 0
        Postconditions:
        • the state of the receiver is updated to reflect the XML element parsed from the reader
        throws nanoxml.XMLParseException If an error occured while parsing the string.
        Throws:
        XMLParseException
      • parseString

        public void parseString​(String string,
                                int offset,
                                int end,
                                int startingLineNr)
                         throws XMLParseException
        Reads one XML element from a String and parses it.
        Parameters:
        string - The string of the the XML data.
        offset - The first character in string to scan.
        end - The character where to stop scanning. This character is not scanned.
        startingLineNr - The line number of the first line in the data.
        Preconditions:
        • string != null
        • end <= string.length()
        • offset < end
        • offset >= 0
        Postconditions:
        • the state of the receiver is updated to reflect the XML element parsed from the reader
        throws nanoxml.XMLParseException If an error occured while parsing the string.
        Throws:
        XMLParseException
      • parseCharArray

        public void parseCharArray​(char[] input,
                                   int offset,
                                   int end)
                            throws XMLParseException
        Reads one XML element from a char array and parses it.
        Parameters:
        input - The string of the the XML data.
        offset - The first character in string to scan.
        end - The character where to stop scanning. This character is not scanned.
        Preconditions:
        • input != null
        • end <= input.length
        • offset < end
        • offset >= 0
        Postconditions:
        • the state of the receiver is updated to reflect the XML element parsed from the reader
        throws nanoxml.XMLParseException If an error occured while parsing the string.
        Throws:
        XMLParseException
      • parseCharArray

        public void parseCharArray​(char[] input,
                                   int offset,
                                   int end,
                                   int startingLineNr)
                            throws XMLParseException
        Reads one XML element from a char array and parses it.
        Parameters:
        input - The string of the the XML data.
        offset - The first character in string to scan.
        end - The character where to stop scanning. This character is not scanned.
        startingLineNr - The line number of the first line in the data.
        Preconditions:
        • input != null
        • end <= input.length
        • offset < end
        • offset >= 0
        Postconditions:
        • the state of the receiver is updated to reflect the XML element parsed from the reader
        throws nanoxml.XMLParseException If an error occured while parsing the string.
        Throws:
        XMLParseException
      • removeChild

        public void removeChild​(XMLElement child)
        Removes a child element.
        Parameters:
        child - The child element to remove.
        Preconditions:
        • child != null
        • child is a child element of the receiver
        Postconditions:
        • countChildren() => old.countChildren() - 1
        • enumerateChildren() => old.enumerateChildren() - child
        • getChildren() => old.enumerateChildren() - child
        see nanoxml.XMLElement#addChild(nanoxml.XMLElement) addChild(XMLElement) see nanoxml.XMLElement#countChildren() see nanoxml.XMLElement#enumerateChildren() see nanoxml.XMLElement#getChildren()
      • removeAttribute

        public void removeAttribute​(String name)
        Removes an attribute.
        Parameters:
        name - The name of the attribute.
        Preconditions:
        • name != null
        • name is a valid XML identifier
        Postconditions:
        • enumerateAttributeNames() => old.enumerateAttributeNames() - name
        • getAttribute(name) => null
        see nanoxml.XMLElement#enumerateAttributeNames() see nanoxml.XMLElement#setDoubleAttribute(java.lang.String, double) setDoubleAttribute(String, double) see nanoxml.XMLElement#setIntAttribute(java.lang.String, int) setIntAttribute(String, int) see nanoxml.XMLElement#setAttribute(java.lang.String, java.lang.Object) setAttribute(String, Object) see nanoxml.XMLElement#getAttribute(java.lang.String) getAttribute(String) see nanoxml.XMLElement#getAttribute(java.lang.String, java.lang.Object) getAttribute(String, Object) see nanoxml.XMLElement#getAttribute(java.lang.String, java.util.Hashtable, java.lang.String, boolean) getAttribute(String, Hashtable, String, boolean) see nanoxml.XMLElement#getStringAttribute(java.lang.String) getStringAttribute(String) see nanoxml.XMLElement#getStringAttribute(java.lang.String, java.lang.String) getStringAttribute(String, String) see nanoxml.XMLElement#getStringAttribute(java.lang.String, java.util.Hashtable, java.lang.String, boolean) getStringAttribute(String, Hashtable, String, boolean) see nanoxml.XMLElement#getIntAttribute(java.lang.String) getIntAttribute(String) see nanoxml.XMLElement#getIntAttribute(java.lang.String, int) getIntAttribute(String, int) see nanoxml.XMLElement#getIntAttribute(java.lang.String, java.util.Hashtable, java.lang.String, boolean) getIntAttribute(String, Hashtable, String, boolean) see nanoxml.XMLElement#getDoubleAttribute(java.lang.String) getDoubleAttribute(String) see nanoxml.XMLElement#getDoubleAttribute(java.lang.String, double) getDoubleAttribute(String, double) see nanoxml.XMLElement#getDoubleAttribute(java.lang.String, java.util.Hashtable, java.lang.String, boolean) getDoubleAttribute(String, Hashtable, String, boolean) see nanoxml.XMLElement#getBooleanAttribute(java.lang.String, java.lang.String, java.lang.String, boolean) getBooleanAttribute(String, String, String, boolean)
      • removeProperty

        public void removeProperty​(String name)
        Deprecated.
        Use removeAttribute instead.
        Removes an attribute.
        Parameters:
        name - The name of the attribute.
      • removeChild

        public void removeChild​(String name)
        Deprecated.
        Use removeAttribute instead.
        Removes an attribute.
        Parameters:
        name - The name of the attribute.
      • createAnotherElement

        protected XMLElement createAnotherElement()
        Creates a new similar XML element.

        You should override this method when subclassing XMLElement.

      • setContent

        public void setContent​(String content)
        Changes the content string.
        Parameters:
        content - The new content string.
      • setTagName

        public void setTagName​(String name)
        Deprecated.
        Use setName instead.
        Changes the name of the element.
        Parameters:
        name - The new name.
      • setName

        public void setName​(String name)
        Changes the name of the element.
        Parameters:
        name - The new name.
        Preconditions:
        • name != null
        • name is a valid XML identifier
        see nanoxml.XMLElement#getName()
      • toString

        public String toString()
        Writes the XML element to a string. see nanoxml.XMLElement#write(java.io.Writer) write(Writer)
        Overrides:
        toString in class Object
      • write

        public void write​(Writer writer)
                   throws IOException
        Writes the XML element to a writer.
        Parameters:
        writer - The writer to write the XML data to.
        Preconditions:
        • writer != null
        • writer is not closed
        Throws:
        IOException - If the data could not be written to the writer. see nanoxml.XMLElement#toString()
      • writeEncoded

        protected void writeEncoded​(Writer writer,
                                    String str)
                             throws IOException
        Writes a string encoded to a writer.
        Parameters:
        writer - The writer to write the XML data to.
        str - The string to write encoded.
        Preconditions:
        • writer != null
        • writer is not closed
        • str != null
        Throws:
        IOException
      • scanIdentifier

        protected void scanIdentifier​(StringBuffer result)
                               throws IOException
        Scans an identifier from the current reader. The scanned identifier is appended to result.
        Parameters:
        result - The buffer in which the scanned identifier will be put.
        Preconditions:
        • result != null
        • The next character read from the reader is a valid first character of an XML identifier.
        Postconditions:
        • The next character read from the reader won't be an identifier character.
        Throws:
        IOException
      • scanWhitespace

        protected char scanWhitespace()
                               throws IOException
        This method scans an identifier from the current reader.
        Returns:
        the next character following the whitespace.
        Throws:
        IOException
      • scanWhitespace

        protected char scanWhitespace​(StringBuffer result)
                               throws IOException
        This method scans an identifier from the current reader. The scanned whitespace is appended to result.
        Returns:
        the next character following the whitespace.
        Preconditions:
        • result != null
        Throws:
        IOException
      • scanString

        protected void scanString​(StringBuffer string)
                           throws IOException
        This method scans a delimited string from the current reader. The scanned string without delimiters is appended to string.
        Preconditions:
        • string != null
        • the next char read is the string delimiter
        Throws:
        IOException
      • scanPCData

        protected void scanPCData​(StringBuffer data)
                           throws IOException
        Scans a #PCDATA element. CDATA sections and entities are resolved. The next < char is skipped. The scanned data is appended to data.
        Preconditions:
        • data != null
        Throws:
        IOException
      • checkCDATA

        protected boolean checkCDATA​(StringBuffer buf)
                              throws IOException
        Scans a special tag and if the tag is a CDATA section, append its content to buf.
        Preconditions:
        • buf != null
        • The first < has already been read.
        Throws:
        IOException
      • skipComment

        protected void skipComment()
                            throws IOException
        Skips a comment.
        Preconditions:
        • The first <!-- has already been read.
        Throws:
        IOException
      • skipSpecialTag

        protected void skipSpecialTag​(int bracketLevel)
                               throws IOException
        Skips a special tag or comment.
        Parameters:
        bracketLevel - The number of open square brackets ([) that have already been read.
        Preconditions:
        • The first <! has already been read.
        • bracketLevel >= 0
        Throws:
        IOException
      • checkLiteral

        protected boolean checkLiteral​(String literal)
                                throws IOException
        Scans the data for literal text. Scanning stops when a character does not match or after the complete text has been checked, whichever comes first.
        Parameters:
        literal - the literal to check.
        Preconditions:
        • literal != null
        Throws:
        IOException
      • readChar

        protected char readChar()
                         throws IOException
        Reads a character from a reader.
        Throws:
        IOException
      • scanElement

        protected void scanElement​(XMLElement elt)
                            throws IOException
        Scans an XML element.
        Parameters:
        elt - The element that will contain the result.
        Preconditions:
        • The first < has already been read.
        • elt != null
        Throws:
        IOException
      • resolveEntity

        protected void resolveEntity​(StringBuffer buf)
                              throws IOException
        Resolves an entity. The name of the entity is read from the reader. The value of the entity is appended to buf.
        Parameters:
        buf - Where to put the entity value.
        Preconditions:
        • The first & has already been read.
        • buf != null
        Throws:
        IOException
      • unreadChar

        protected void unreadChar​(char ch)
        Pushes a character back to the read-back buffer.
        Parameters:
        ch - The character to push back.
        Preconditions:
        • The read-back buffer is empty.
        • ch != '\0'
      • invalidValueSet

        protected XMLParseException invalidValueSet​(String name)
        Creates a parse exception for when an invalid valueset is given to a method.
        Parameters:
        name - The name of the entity.
        Preconditions:
        • name != null
      • invalidValue

        protected XMLParseException invalidValue​(String name,
                                                 String value)
        Creates a parse exception for when an invalid value is given to a method.
        Parameters:
        name - The name of the entity.
        value - The value of the entity.
        Preconditions:
        • name != null
        • value != null
      • unexpectedEndOfData

        protected XMLParseException unexpectedEndOfData()
        Creates a parse exception for when the end of the data input has been reached.
      • syntaxError

        protected XMLParseException syntaxError​(String context)
        Creates a parse exception for when a syntax error occured.
        Parameters:
        context - The context in which the error occured.
        Preconditions:
        • context != null
        • context.length() > 0
      • expectedInput

        protected XMLParseException expectedInput​(String charSet)
        Creates a parse exception for when the next character read is not the character that was expected.
        Parameters:
        charSet - The set of characters (in human readable form) that was expected.
        Preconditions:
        • charSet != null
        • charSet.length() > 0
      • unknownEntity

        protected XMLParseException unknownEntity​(String name)
        Creates a parse exception for when an entity could not be resolved.
        Parameters:
        name - The name of the entity.
        Preconditions:
        • name != null
        • name.length() > 0