Package weka.core.xml

Class XMLSerialization

  • All Implemented Interfaces:
    RevisionHandler
    Direct Known Subclasses:
    XMLBasicSerialization

    public class XMLSerialization
    extends Object
    implements RevisionHandler
    With this class objects can be serialized to XML instead into a binary format. It uses introspection (cf. beans) to retrieve the data from the given object, i.e. it can only access beans-conform fields automatically.

    The generic approach of writing data as XML can be overriden by adding custom methods for reading/writing in a derived class (cf. m_Properties, m_CustomMethods).
    Custom read and write methods must have the same signature (and also be public!) as the readFromXML and writeToXML methods. Methods that apply to the naming rule read + property name are added automatically to the list of methods by the method XMLSerializationMethodHandler.addMethods(...).

    Other properties that are not conform the bean set/get-methods have to be processed manually in a derived class (cf. readPostProcess(Object), writePostProcess(Object)).

    For a complete XML serialization/deserialization have a look at the KOML class.

    If a stored class has a constructor that takes a String to initialize (e.g. String or Double) then the content of the tag will used for the constructor, e.g. from

     <object name="name" class="String" primitive="no">Smith</object>
     
    "Smith" will be used to instantiate a String object as constructor argument.

    Version:
    $Revision$
    Author:
    FracPete (fracpete at waikato dot ac dot nz)
    See Also:
    KOML, fromXML(Document), toXML(Object), m_Properties, m_CustomMethods, readPostProcess(Object), writePostProcess(Object), readFromXML(Element), writeToXML(Element, Object, String)
    • Constructor Detail

      • XMLSerialization

        public XMLSerialization()
                         throws Exception
        initializes the serialization
        Throws:
        Exception - if initialization fails
    • Method Detail

      • setSuppressWarnings

        public void setSuppressWarnings​(boolean suppress)
        Set whether to suppress warning messages or not
        Parameters:
        suppress - true to suppress warnings
      • clear

        public void clear()
                   throws Exception
        generates internally a new XML document and clears also the IgnoreList and the mappings for the Read/Write-Methods
        Throws:
        Exception - if something goes wrong
      • getVersion

        public String getVersion()
        returns the WEKA version with which the serialized object was created
        Returns:
        the current version
        See Also:
        Version
      • writeToXML

        public Element writeToXML​(Element parent,
                                  Object o,
                                  String name)
                           throws Exception
        adds the given Object to a DOM structure. (only public due to reflection).
        Note: overrideClassname(Object) is not invoked in case of arrays, since the array class could be a superclass, whereas the elements of the array can be specialized subclasses. In case of an array the method overrideClassname(String) is invoked, which searches for an exact match of the classname in the override hashtable.
        Parameters:
        parent - the parent of this object, e.g. the class this object is a member of
        o - the Object to describe in XML
        name - the name of the object
        Returns:
        the node that was created
        Throws:
        Exception - if the DOM creation fails
        See Also:
        overrideClassname(Object), overrideClassname(String), m_ClassnameOverride
      • toXML

        public XMLDocument toXML​(Object o)
                          throws Exception
        extracts all accesible properties from the given object
        Parameters:
        o - the object to turn into an XML representation
        Returns:
        the generated DOM document
        Throws:
        Exception - if XML generation fails
      • readBooleanFromXML

        public boolean readBooleanFromXML​(Element node)
                                   throws Exception
        builds the primitive from the given DOM node.
        Parameters:
        node - the associated XML node
        Returns:
        the primitive created from the XML description
        Throws:
        Exception - if instantiation fails
      • readByteFromXML

        public byte readByteFromXML​(Element node)
                             throws Exception
        builds the primitive from the given DOM node.
        Parameters:
        node - the associated XML node
        Returns:
        the primitive created from the XML description
        Throws:
        Exception - if instantiation fails
      • readCharFromXML

        public char readCharFromXML​(Element node)
                             throws Exception
        builds the primitive from the given DOM node.
        Parameters:
        node - the associated XML node
        Returns:
        the primitive created from the XML description
        Throws:
        Exception - if instantiation fails
      • readDoubleFromXML

        public double readDoubleFromXML​(Element node)
                                 throws Exception
        builds the primitive from the given DOM node.
        Parameters:
        node - the associated XML node
        Returns:
        the primitive created from the XML description
        Throws:
        Exception - if instantiation fails
      • readFloatFromXML

        public float readFloatFromXML​(Element node)
                               throws Exception
        builds the primitive from the given DOM node.
        Parameters:
        node - the associated XML node
        Returns:
        the primitive created from the XML description
        Throws:
        Exception - if instantiation fails
      • readIntFromXML

        public int readIntFromXML​(Element node)
                           throws Exception
        builds the primitive from the given DOM node.
        Parameters:
        node - the associated XML node
        Returns:
        the primitive created from the XML description
        Throws:
        Exception - if instantiation fails
      • readLongFromXML

        public long readLongFromXML​(Element node)
                             throws Exception
        builds the primitive from the given DOM node.
        Parameters:
        node - the associated XML node
        Returns:
        the primitive created from the XML description
        Throws:
        Exception - if instantiation fails
      • readShortFromXML

        public short readShortFromXML​(Element node)
                               throws Exception
        builds the primitive from the given DOM node.
        Parameters:
        node - the associated XML node
        Returns:
        the primitive created from the XML description
        Throws:
        Exception - if instantiation fails
      • readFromXML

        public Object readFromXML​(Object o,
                                  String name,
                                  Element child)
                           throws Exception
        adds the specific node to the object via a set method
        Parameters:
        o - the object to set a property
        name - the name of the object for which to set a property (only for information reasons)
        child - the value of the property to add
        Returns:
        the provided object, but augmented by the child
        Throws:
        Exception - if something goes wrong
      • readFromXML

        public Object readFromXML​(Element node)
                           throws Exception
        builds the object from the given DOM node. (only public due to reflection)
        Parameters:
        node - the associated XML node
        Returns:
        the instance created from the XML description
        Throws:
        Exception - if instantiation fails
      • fromXML

        public Object fromXML​(Document document)
                       throws Exception
        returns the given DOM document as an instance of the specified class
        Parameters:
        document - the parsed DOM document representing the object
        Returns:
        the XML as object
        Throws:
        Exception - if object instantiation fails
      • read

        public Object read​(String xml)
                    throws Exception
        parses the given XML string (can be XML or a filename) and returns an Object generated from the representation
        Parameters:
        xml - the xml to parse (if "
        Returns:
        the generated instance
        Throws:
        Exception - if something goes wrong with the parsing
      • read

        public Object read​(File file)
                    throws Exception
        parses the given file and returns a DOM document
        Parameters:
        file - the XML file to parse
        Returns:
        the parsed DOM document
        Throws:
        Exception - if something goes wrong with the parsing
      • read

        public Object read​(InputStream stream)
                    throws Exception
        parses the given stream and returns a DOM document
        Parameters:
        stream - the XML stream to parse
        Returns:
        the parsed DOM document
        Throws:
        Exception - if something goes wrong with the parsing
      • read

        public Object read​(Reader reader)
                    throws Exception
        parses the given reader and returns a DOM document
        Parameters:
        reader - the XML reader to parse
        Returns:
        the parsed DOM document
        Throws:
        Exception - if something goes wrong with the parsing
      • write

        public void write​(String file,
                          Object o)
                   throws Exception
        writes the given object into the file
        Parameters:
        file - the filename to write to
        o - the object to serialize as XML
        Throws:
        Exception - if something goes wrong with the parsing
      • write

        public void write​(File file,
                          Object o)
                   throws Exception
        writes the given object into the file
        Parameters:
        file - the filename to write to
        o - the object to serialize as XML
        Throws:
        Exception - if something goes wrong with the parsing
      • write

        public void write​(OutputStream stream,
                          Object o)
                   throws Exception
        writes the given object into the stream
        Parameters:
        stream - the filename to write to
        o - the object to serialize as XML
        Throws:
        Exception - if something goes wrong with the parsing
      • write

        public void write​(Writer writer,
                          Object o)
                   throws Exception
        writes the given object into the writer
        Parameters:
        writer - the filename to write to
        o - the object to serialize as XML
        Throws:
        Exception - if something goes wrong with the parsing
      • main

        public static void main​(String[] args)
                         throws Exception
        for testing only. if the first argument is a filename with ".xml" as extension it tries to generate an instance from the XML description and does a toString() of the generated object.
        Throws:
        Exception