Class XMLElement

  • All Implemented Interfaces:
    java.io.Serializable

    public class XMLElement
    extends java.lang.Object
    implements java.io.Serializable
    XMLElement is a representation of an XML object. The object is able to parse XML code.

    Note that NanoXML is not 100% XML 1.0 compliant:

    • The parser is non-validating.
    • The DTD is fully ignored, including <!ENTITY...>.
    • There is no support for mixed content (elements containing both subelements and CDATA elements)

    You can opt to use a SAX compatible API, by including both nanoxml.jar and nanoxml-sax.jar in your classpath and setting the property org.xml.sax.parser to nanoxml.sax.SAXParser

    $Revision: 1.3 $
    $Date: 2005/11/19 09:15:30 $

    Version:
    1.6
    Author:
    Marc De Scheemaecker < Marc.DeScheemaecker@advalvas.be >
    See Also:
    XMLParseException, Serialized Form
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
        XMLElement()
      Creates a new XML element.
        XMLElement​(boolean skipLeadingWhitespace)
      Creates a new XML element.
        XMLElement​(java.util.Properties conversionTable)
      Creates a new XML element.
        XMLElement​(java.util.Properties conversionTable, boolean skipLeadingWhitespace)
      Creates a new XML element.
        XMLElement​(java.util.Properties conversionTable, boolean skipLeadingWhitespace, boolean ignoreCase)
      Creates a new XML element.
      protected XMLElement​(java.util.Properties conversionTable, boolean skipLeadingWhitespace, boolean fillBasicConversionTable, boolean ignoreCase)
      Creates a new XML element.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void addChild​(XMLElement child)
      Adds a subobject.
      void addProperty​(java.lang.String key, double value)
      Adds a property.
      void addProperty​(java.lang.String key, int value)
      Adds a property.
      void addProperty​(java.lang.String key, java.lang.Object value)
      Adds a property.
      int countChildren()
      Returns the number of subobjects of the object.
      protected XMLElement createAnotherElement()
      Creates a new XML element.
      protected java.lang.String decodeString​(java.lang.String s, int lineNr)
      Converts &...; sequences to "normal" chars.
      java.util.Enumeration enumerateChildren()
      Enumerates the subobjects of the object.
      java.util.Enumeration enumeratePropertyNames()
      Enumerates the attribute names.
      java.util.Vector getChildren()
      Returns the subobjects of the object.
      java.lang.String getContents()
      Returns the #PCDATA content of the object.
      int getIntProperty​(java.lang.String key, java.util.Hashtable valueSet, java.lang.String defaultValue)
      Returns a property by looking up a key in a hashtable.
      int getLineNr()
      Returns the line nr on which the element is found.
      java.lang.String getProperty​(java.lang.String key)
      Returns a property of the object.
      double getProperty​(java.lang.String key, double defaultValue)
      Returns a floating point property of the object.
      int getProperty​(java.lang.String key, int defaultValue)
      Returns an integer property of the object.
      java.lang.String getProperty​(java.lang.String key, java.lang.String defaultValue)
      Returns a property of the object.
      boolean getProperty​(java.lang.String key, java.lang.String trueValue, java.lang.String falseValue, boolean defaultValue)
      Returns a boolean property of the object.
      java.lang.Object getProperty​(java.lang.String key, java.util.Hashtable valueSet, java.lang.String defaultValue)
      Returns a property by looking up a key in the hashtable valueSet If the property doesn't exist, the value corresponding to defaultValue is returned.
      double getSpecialDoubleProperty​(java.lang.String key, java.util.Hashtable valueSet, java.lang.String defaultValue)
      Returns a property by looking up a key in the hashtable valueSet .
      int getSpecialIntProperty​(java.lang.String key, java.util.Hashtable valueSet, java.lang.String defaultValue)
      Returns a property by looking up a key in the hashtable valueSet .
      java.lang.String getStringProperty​(java.lang.String key, java.util.Hashtable valueSet, java.lang.String defaultValue)
      Returns a property by looking up a key in the hashtable valueSet .
      java.lang.String getTagName()
      Returns the class (i.e.
      int parseCharArray​(char[] input, int offset, int end)
      Parses an XML definition starting at offset .
      int parseCharArray​(char[] input, int offset, int end, int startingLineNr)
      Parses an XML definition starting at offset .
      void parseFromReader​(java.io.Reader reader)
      Reads an XML definition from a java.io.Reader and parses it.
      void parseFromReader​(java.io.Reader reader, int startingLineNr)
      Reads an XML definition from a java.io.Reader and parses it.
      void parseString​(java.lang.String string)
      Parses an XML definition.
      int parseString​(java.lang.String string, int offset)
      Parses an XML definition starting at offset .
      int parseString​(java.lang.String string, int offset, int end)
      Parses an XML definition starting at offset .
      int parseString​(java.lang.String string, int offset, int end, int startingLineNr)
      Parses an XML definition starting at offset .
      void removeChild​(XMLElement child)
      Removes a child object.
      void removeChild​(java.lang.String key)
      Removes an attribute.
      protected void scanChildren​(char[] input, int contentOffset, int contentSize, int contentLineNr)
      !!! Searches the content for child objects.
      void setContent​(java.lang.String content)
      Changes the content string.
      void setTagName​(java.lang.String tagName)
      Changes the tag name.
      protected int skipBogusTag​(char[] input, int offset, int end, int[] lineNr)
      Skips a tag that don't contain any useful data: <?...?>, <!...> and comments.
      java.lang.String toString()
      Writes the XML element to a string.
      void write​(java.io.Writer writer)
      Writes the XML element to a writer.
      void write​(java.io.Writer writer, int indent)
      Writes the XML element to a writer.
      protected void writeEncoded​(java.io.PrintWriter out, java.lang.String str)
      Writes a string encoded to a writer.
      • Methods inherited from class java.lang.Object

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

      • NANOXML_MAJOR_VERSION

        public static final int NANOXML_MAJOR_VERSION
        Major version of NanoXML.
        See Also:
        Constant Field Values
      • NANOXML_MINOR_VERSION

        public static final int NANOXML_MINOR_VERSION
        Minor version of NanoXML.
        See Also:
        Constant Field Values
    • Constructor Detail

      • XMLElement

        public XMLElement​(java.util.Properties conversionTable)
        Creates a new XML element. The following settings are used:
        Conversion table
        conversionTable combined with the minimal XML conversions: &amp; &lt; &gt; &apos; &quot;
        Skip whitespace in contents
        false
        Ignore Case
        true
        Parameters:
        conversionTable - Description of Parameter
        See Also:
        XMLElement(), XMLElement(boolean), XMLElement(java.util.Properties,boolean)
      • XMLElement

        public XMLElement​(boolean skipLeadingWhitespace)
        Creates a new XML element. The following settings are used:
        Conversion table
        Minimal XML conversions: &amp; &lt; &gt; &apos; &quot;
        Skip whitespace in contents
        skipLeadingWhitespace
        Ignore Case
        true
        Parameters:
        skipLeadingWhitespace - Description of Parameter
        See Also:
        XMLElement(), XMLElement(java.util.Properties), XMLElement(java.util.Properties,boolean)
      • XMLElement

        public XMLElement​(java.util.Properties conversionTable,
                          boolean skipLeadingWhitespace)
        Creates a new XML element. The following settings are used:
        Conversion table
        conversionTable combined with the minimal XML conversions: &amp; &lt; &gt; &apos; &quot;
        Skip whitespace in contents
        skipLeadingWhitespace
        Ignore Case
        true
        Parameters:
        conversionTable - Description of Parameter
        skipLeadingWhitespace - Description of Parameter
        See Also:
        XMLElement(), XMLElement(boolean), XMLElement(java.util.Properties)
      • XMLElement

        public XMLElement​(java.util.Properties conversionTable,
                          boolean skipLeadingWhitespace,
                          boolean ignoreCase)
        Creates a new XML element. The following settings are used:
        Conversion table
        conversionTable , eventually combined with the minimal XML conversions: &amp; &lt; &gt; &apos; &quot; (depending on fillBasicConversionTable )
        Skip whitespace in contents
        skipLeadingWhitespace
        Ignore Case
        ignoreCase

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

        Parameters:
        conversionTable - Description of Parameter
        skipLeadingWhitespace - Description of Parameter
        ignoreCase - Description of Parameter
        See Also:
        XMLElement(), XMLElement(boolean), XMLElement(java.util.Properties), XMLElement(java.util.Properties,boolean)
      • XMLElement

        protected XMLElement​(java.util.Properties conversionTable,
                             boolean skipLeadingWhitespace,
                             boolean fillBasicConversionTable,
                             boolean ignoreCase)
        Creates a new XML element. The following settings are used:
        Conversion table
        conversionTable , eventually combined with the minimal XML conversions: &amp; &lt; &gt; &apos; &quot; (depending on fillBasicConversionTable )
        Skip whitespace in contents
        skipLeadingWhitespace
        Ignore Case
        ignoreCase

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

        Parameters:
        conversionTable - Description of Parameter
        skipLeadingWhitespace - Description of Parameter
        fillBasicConversionTable - Description of Parameter
        ignoreCase - Description of Parameter
        See Also:
        XMLElement(), XMLElement(boolean), XMLElement(java.util.Properties), XMLElement(java.util.Properties,boolean)
    • Method Detail

      • setContent

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

        public void setTagName​(java.lang.String tagName)
        Changes the tag name.
        Parameters:
        tagName - The new tag name.
      • getChildren

        public java.util.Vector getChildren()
        Returns the subobjects of the object.
        Returns:
        The Children value
      • getContents

        public java.lang.String getContents()
        Returns the #PCDATA content of the object. If there is no such content, null is returned.
        Returns:
        The Contents value
      • getLineNr

        public int getLineNr()
        Returns the line nr on which the element is found.
        Returns:
        The LineNr value
      • getIntProperty

        public int getIntProperty​(java.lang.String key,
                                  java.util.Hashtable valueSet,
                                  java.lang.String defaultValue)
        Returns a property by looking up a key in a hashtable. If the property doesn't exist, the value corresponding to defaultValue is returned.
        Parameters:
        key - Description of Parameter
        valueSet - Description of Parameter
        defaultValue - Description of Parameter
        Returns:
        The IntProperty value
      • getProperty

        public java.lang.String getProperty​(java.lang.String key)
        Returns a property of the object. If there is no such property, this method returns null.
        Parameters:
        key - Description of Parameter
        Returns:
        The Property value
      • getProperty

        public java.lang.String getProperty​(java.lang.String key,
                                            java.lang.String defaultValue)
        Returns a property of the object. If the property doesn't exist, defaultValue is returned.
        Parameters:
        key - Description of Parameter
        defaultValue - Description of Parameter
        Returns:
        The Property value
      • getProperty

        public int getProperty​(java.lang.String key,
                               int defaultValue)
        Returns an integer property of the object. If the property doesn't exist, defaultValue is returned.
        Parameters:
        key - Description of Parameter
        defaultValue - Description of Parameter
        Returns:
        The Property value
      • getProperty

        public double getProperty​(java.lang.String key,
                                  double defaultValue)
        Returns a floating point property of the object. If the property doesn't exist, defaultValue is returned.
        Parameters:
        key - Description of Parameter
        defaultValue - Description of Parameter
        Returns:
        The Property value
      • getProperty

        public boolean getProperty​(java.lang.String key,
                                   java.lang.String trueValue,
                                   java.lang.String falseValue,
                                   boolean defaultValue)
        Returns a boolean property of the object. If the property is missing, defaultValue is returned.
        Parameters:
        key - Description of Parameter
        trueValue - Description of Parameter
        falseValue - Description of Parameter
        defaultValue - Description of Parameter
        Returns:
        The Property value
      • getProperty

        public java.lang.Object getProperty​(java.lang.String key,
                                            java.util.Hashtable valueSet,
                                            java.lang.String defaultValue)
        Returns a property by looking up a key in the hashtable valueSet If the property doesn't exist, the value corresponding to defaultValue is returned.
        Parameters:
        key - Description of Parameter
        valueSet - Description of Parameter
        defaultValue - Description of Parameter
        Returns:
        The Property value
      • getStringProperty

        public java.lang.String getStringProperty​(java.lang.String key,
                                                  java.util.Hashtable valueSet,
                                                  java.lang.String defaultValue)
        Returns a property by looking up a key in the hashtable valueSet . If the property doesn't exist, the value corresponding to defaultValue is returned.
        Parameters:
        key - Description of Parameter
        valueSet - Description of Parameter
        defaultValue - Description of Parameter
        Returns:
        The StringProperty value
      • getSpecialIntProperty

        public int getSpecialIntProperty​(java.lang.String key,
                                         java.util.Hashtable valueSet,
                                         java.lang.String defaultValue)
        Returns a property by looking up a key in the hashtable valueSet . If the value is not defined in the hashtable, the value is considered to be an integer. If the property doesn't exist, the value corresponding to defaultValue is returned.
        Parameters:
        key - Description of Parameter
        valueSet - Description of Parameter
        defaultValue - Description of Parameter
        Returns:
        The SpecialIntProperty value
      • getSpecialDoubleProperty

        public double getSpecialDoubleProperty​(java.lang.String key,
                                               java.util.Hashtable valueSet,
                                               java.lang.String defaultValue)
        Returns a property by looking up a key in the hashtable valueSet . If the value is not defined in the hashtable, the value is considered to be a floating point number. If the property doesn't exist, the value corresponding to defaultValue is returned.
        Parameters:
        key - Description of Parameter
        valueSet - Description of Parameter
        defaultValue - Description of Parameter
        Returns:
        The SpecialDoubleProperty value
      • getTagName

        public java.lang.String getTagName()
        Returns the class (i.e. the name indicated in the tag) of the object.
        Returns:
        The TagName value
      • addChild

        public void addChild​(XMLElement child)
        Adds a subobject.
        Parameters:
        child - The feature to be added to the Child attribute
      • addProperty

        public void addProperty​(java.lang.String key,
                                java.lang.Object value)
        Adds a property. If the element is case insensitive, the property name is capitalized.
        Parameters:
        key - The feature to be added to the Property attribute
        value - The feature to be added to the Property attribute
      • addProperty

        public void addProperty​(java.lang.String key,
                                int value)
        Adds a property. If the element is case insensitive, the property name is capitalized.
        Parameters:
        key - The feature to be added to the Property attribute
        value - The feature to be added to the Property attribute
      • addProperty

        public void addProperty​(java.lang.String key,
                                double value)
        Adds a property. If the element is case insensitive, the property name is capitalized.
        Parameters:
        key - The feature to be added to the Property attribute
        value - The feature to be added to the Property attribute
      • countChildren

        public int countChildren()
        Returns the number of subobjects of the object.
        Returns:
        Description of the Returned Value
      • enumeratePropertyNames

        public java.util.Enumeration enumeratePropertyNames()
        Enumerates the attribute names.
        Returns:
        Description of the Returned Value
      • enumerateChildren

        public java.util.Enumeration enumerateChildren()
        Enumerates the subobjects of the object.
        Returns:
        Description of the Returned Value
      • parseFromReader

        public void parseFromReader​(java.io.Reader reader)
                             throws java.io.IOException,
                                    XMLParseException
        Reads an XML definition from a java.io.Reader and parses it.
        Parameters:
        reader - Description of Parameter
        Throws:
        java.io.IOException - Description of Exception
        XMLParseException - Description of Exception
      • parseFromReader

        public void parseFromReader​(java.io.Reader reader,
                                    int startingLineNr)
                             throws java.io.IOException,
                                    XMLParseException
        Reads an XML definition from a java.io.Reader and parses it.
        Parameters:
        reader - Description of Parameter
        startingLineNr - Description of Parameter
        Throws:
        java.io.IOException - Description of Exception
        XMLParseException - Description of Exception
      • parseString

        public void parseString​(java.lang.String string)
                         throws XMLParseException
        Parses an XML definition.
        Parameters:
        string - Description of Parameter
        Throws:
        XMLParseException - Description of Exception
      • parseString

        public int parseString​(java.lang.String string,
                               int offset)
                        throws XMLParseException
        Parses an XML definition starting at offset .
        Parameters:
        string - Description of Parameter
        offset - Description of Parameter
        Returns:
        the offset of the string following the XML data
        Throws:
        XMLParseException - Description of Exception
      • parseString

        public int parseString​(java.lang.String string,
                               int offset,
                               int end)
                        throws XMLParseException
        Parses an XML definition starting at offset .
        Parameters:
        string - Description of Parameter
        offset - Description of Parameter
        end - Description of Parameter
        Returns:
        the offset of the string following the XML data (<= end)
        Throws:
        XMLParseException - Description of Exception
      • parseString

        public int parseString​(java.lang.String string,
                               int offset,
                               int end,
                               int startingLineNr)
                        throws XMLParseException
        Parses an XML definition starting at offset .
        Parameters:
        string - Description of Parameter
        offset - Description of Parameter
        end - Description of Parameter
        startingLineNr - Description of Parameter
        Returns:
        the offset of the string following the XML data (<= end)
        Throws:
        XMLParseException - Description of Exception
      • parseCharArray

        public int parseCharArray​(char[] input,
                                  int offset,
                                  int end)
                           throws XMLParseException
        Parses an XML definition starting at offset .
        Parameters:
        input - Description of Parameter
        offset - Description of Parameter
        end - Description of Parameter
        Returns:
        the offset of the array following the XML data (<= end)
        Throws:
        XMLParseException - Description of Exception
      • parseCharArray

        public int parseCharArray​(char[] input,
                                  int offset,
                                  int end,
                                  int startingLineNr)
                           throws XMLParseException
        Parses an XML definition starting at offset .
        Parameters:
        input - Description of Parameter
        offset - Description of Parameter
        end - Description of Parameter
        startingLineNr - Description of Parameter
        Returns:
        the offset of the array following the XML data (<= end)
        Throws:
        XMLParseException - Description of Exception
      • removeChild

        public void removeChild​(XMLElement child)
        Removes a child object. If the object is not a child, nothing happens.
        Parameters:
        child - Description of Parameter
      • removeChild

        public void removeChild​(java.lang.String key)
        Removes an attribute.
        Parameters:
        key - Description of Parameter
      • toString

        public java.lang.String toString()
        Writes the XML element to a string.
        Overrides:
        toString in class java.lang.Object
        Returns:
        Description of the Returned Value
      • write

        public void write​(java.io.Writer writer)
        Writes the XML element to a writer.
        Parameters:
        writer - Description of Parameter
      • write

        public void write​(java.io.Writer writer,
                          int indent)
        Writes the XML element to a writer.
        Parameters:
        writer - Description of Parameter
        indent - Description of Parameter
      • scanChildren

        protected void scanChildren​(char[] input,
                                    int contentOffset,
                                    int contentSize,
                                    int contentLineNr)
                             throws XMLParseException
        !!! Searches the content for child objects. If such objects exist, the content is reduced to null.
        Parameters:
        input - Description of Parameter
        contentOffset - Description of Parameter
        contentSize - Description of Parameter
        contentLineNr - Description of Parameter
        Throws:
        XMLParseException - Description of Exception
        See Also:
        parseCharArray(char[], int, int, int[])
      • createAnotherElement

        protected XMLElement createAnotherElement()
        Creates a new XML element.
        Returns:
        Description of the Returned Value
      • skipBogusTag

        protected int skipBogusTag​(char[] input,
                                   int offset,
                                   int end,
                                   int[] lineNr)
        Skips a tag that don't contain any useful data: <?...?>, <!...> and comments.
        Parameters:
        input - Description of Parameter
        offset - Description of Parameter
        end - Description of Parameter
        lineNr - Description of Parameter
        Returns:
        the position after the tag
      • decodeString

        protected java.lang.String decodeString​(java.lang.String s,
                                                int lineNr)
        Converts &...; sequences to "normal" chars.
        Parameters:
        s - Description of Parameter
        lineNr - Description of Parameter
        Returns:
        Description of the Returned Value
      • writeEncoded

        protected void writeEncoded​(java.io.PrintWriter out,
                                    java.lang.String str)
        Writes a string encoded to a writer.
        Parameters:
        out - Description of Parameter
        str - Description of Parameter