public class XMLSerialization extends Object implements RevisionHandler
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.
KOML
,
fromXML(Document)
,
toXML(Object)
,
m_Properties
,
m_CustomMethods
,
readPostProcess(Object)
,
writePostProcess(Object)
,
readFromXML(Element)
,
writeToXML(Element, Object, String)
Modifier and Type | Field and Description |
---|---|
static String |
ATT_ARRAY
the tag whether array or not (yes/no)
|
static String |
ATT_ARRAY_DEFAULT
default value for attribute ATT_ARRAY
|
static String |
ATT_CLASS
the tag for the class
|
static String |
ATT_NAME
the tag for the name
|
static String |
ATT_NULL
the tag whether null or not (yes/no)
|
static String |
ATT_NULL_DEFAULT
default value for attribute ATT_NULL
|
static String |
ATT_PRIMITIVE
the tag whether primitive or not (yes/no)
|
static String |
ATT_PRIMITIVE_DEFAULT
default value for attribute ATT_PRIMITIVE
|
static String |
ATT_VERSION
the version attribute
|
static String |
DOCTYPE
the DOCTYPE for the serialization
|
static String |
ROOT_NODE
the root node of the XML document
|
static List<String> |
SUPPRESS_PROPERTY_WARNINGS
List of fully qualified property names to suppress any warning messages for
|
static String |
TAG_OBJECT
the tag for an object
|
static String |
VAL_NO
the value "no" for the primitive and array attribute
|
static String |
VAL_ROOT
the value of the name for the root node
|
static String |
VAL_YES
the value "yes" for the primitive and array attribute
|
Constructor and Description |
---|
XMLSerialization()
initializes the serialization
|
Modifier and Type | Method and Description |
---|---|
void |
clear()
generates internally a new XML document and clears also the IgnoreList and
the mappings for the Read/Write-Methods
|
Object |
fromXML(Document document)
returns the given DOM document as an instance of the specified class
|
String |
getRevision()
Returns the revision string.
|
String |
getVersion()
returns the WEKA version with which the serialized object was created
|
static void |
main(String[] args)
for testing only.
|
Object |
read(File file)
parses the given file and returns a DOM document
|
Object |
read(InputStream stream)
parses the given stream and returns a DOM document
|
Object |
read(Reader reader)
parses the given reader and returns a DOM document
|
Object |
read(String xml)
parses the given XML string (can be XML or a filename) and returns an
Object generated from the representation
|
boolean |
readBooleanFromXML(Element node)
builds the primitive from the given DOM node.
|
byte |
readByteFromXML(Element node)
builds the primitive from the given DOM node.
|
char |
readCharFromXML(Element node)
builds the primitive from the given DOM node.
|
double |
readDoubleFromXML(Element node)
builds the primitive from the given DOM node.
|
float |
readFloatFromXML(Element node)
builds the primitive from the given DOM node.
|
Object |
readFromXML(Element node)
builds the object from the given DOM node.
|
Object |
readFromXML(Object o,
String name,
Element child)
adds the specific node to the object via a set method
|
int |
readIntFromXML(Element node)
builds the primitive from the given DOM node.
|
long |
readLongFromXML(Element node)
builds the primitive from the given DOM node.
|
short |
readShortFromXML(Element node)
builds the primitive from the given DOM node.
|
void |
setSuppressWarnings(boolean suppress)
Set whether to suppress warning messages or not
|
XMLDocument |
toXML(Object o)
extracts all accesible properties from the given object
|
void |
write(File file,
Object o)
writes the given object into the file
|
void |
write(OutputStream stream,
Object o)
writes the given object into the stream
|
void |
write(String file,
Object o)
writes the given object into the file
|
void |
write(Writer writer,
Object o)
writes the given object into the writer
|
Element |
writeToXML(Element parent,
Object o,
String name)
adds the given Object to a DOM structure.
|
public static final String TAG_OBJECT
public static final String ATT_VERSION
public static final String ATT_NAME
public static final String ATT_CLASS
public static final String ATT_PRIMITIVE
public static final String ATT_ARRAY
public static final String ATT_NULL
public static final String VAL_YES
public static final String VAL_NO
public static final String VAL_ROOT
public static final String ROOT_NODE
public static final String ATT_PRIMITIVE_DEFAULT
ATT_PRIMITIVE
,
Constant Field Valuespublic static final String ATT_ARRAY_DEFAULT
ATT_ARRAY
,
Constant Field Valuespublic static final String ATT_NULL_DEFAULT
ATT_NULL
,
Constant Field Valuespublic static final String DOCTYPE
public void setSuppressWarnings(boolean suppress)
suppress
- true to suppress warningspublic void clear() throws Exception
Exception
- if something goes wrongpublic String getVersion()
Version
public Element writeToXML(Element parent, Object o, String name) throws Exception
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.parent
- the parent of this object, e.g. the class this object is a
member ofo
- the Object to describe in XMLname
- the name of the objectException
- if the DOM creation failsoverrideClassname(Object)
,
overrideClassname(String)
,
m_ClassnameOverride
public XMLDocument toXML(Object o) throws Exception
o
- the object to turn into an XML representationException
- if XML generation failspublic boolean readBooleanFromXML(Element node) throws Exception
node
- the associated XML nodeException
- if instantiation failspublic byte readByteFromXML(Element node) throws Exception
node
- the associated XML nodeException
- if instantiation failspublic char readCharFromXML(Element node) throws Exception
node
- the associated XML nodeException
- if instantiation failspublic double readDoubleFromXML(Element node) throws Exception
node
- the associated XML nodeException
- if instantiation failspublic float readFloatFromXML(Element node) throws Exception
node
- the associated XML nodeException
- if instantiation failspublic int readIntFromXML(Element node) throws Exception
node
- the associated XML nodeException
- if instantiation failspublic long readLongFromXML(Element node) throws Exception
node
- the associated XML nodeException
- if instantiation failspublic short readShortFromXML(Element node) throws Exception
node
- the associated XML nodeException
- if instantiation failspublic Object readFromXML(Object o, String name, Element child) throws Exception
o
- the object to set a propertyname
- the name of the object for which to set a property (only for
information reasons)child
- the value of the property to addException
- if something goes wrongpublic Object readFromXML(Element node) throws Exception
node
- the associated XML nodeException
- if instantiation failspublic Object fromXML(Document document) throws Exception
document
- the parsed DOM document representing the objectException
- if object instantiation failspublic Object read(String xml) throws Exception
xml
- the xml to parse (if "
Exception
- if something goes wrong with the parsingpublic Object read(File file) throws Exception
file
- the XML file to parseException
- if something goes wrong with the parsingpublic Object read(InputStream stream) throws Exception
stream
- the XML stream to parseException
- if something goes wrong with the parsingpublic Object read(Reader reader) throws Exception
reader
- the XML reader to parseException
- if something goes wrong with the parsingpublic void write(String file, Object o) throws Exception
file
- the filename to write too
- the object to serialize as XMLException
- if something goes wrong with the parsingpublic void write(File file, Object o) throws Exception
file
- the filename to write too
- the object to serialize as XMLException
- if something goes wrong with the parsingpublic void write(OutputStream stream, Object o) throws Exception
stream
- the filename to write too
- the object to serialize as XMLException
- if something goes wrong with the parsingpublic void write(Writer writer, Object o) throws Exception
writer
- the filename to write too
- the object to serialize as XMLException
- if something goes wrong with the parsingpublic static void main(String[] args) throws Exception
toString()
of the generated object.Exception
public String getRevision()
getRevision
in interface RevisionHandler
Copyright © 2019 University of Waikato, Hamilton, NZ. All rights reserved.