public abstract class XMLFormat<T> extends Object
This class represents the format base class for XML serialization and deserialization.
Instances of this class are typically retrieved from the
XMLContext (OSGi service or not).
@Format(xml=GraphicXML.class)
public abstract class Graphic implements XMLSerializable {
private boolean isVisible;
private Paint paint; // null if none.
private Stroke stroke; // null if none.
private Transform transform; // null if none.
// XML format with positional associations (members identified by their position),
// see XML package description for examples of name associations.
public static class GraphicXML extends XMLFormat<Graphic> {
public void write(Graphic g, OutputElement xml) {
xml.setAttribute("isVisible", g.isVisible);
xml.add(g.paint); // First.
xml.add(g.stroke); // Second.
xml.add(g.transform); // Third.
}
public void read(InputElement xml, Graphic g) {
g.isVisible = xml.getAttribute("isVisible", true);
g.paint = xml.getNext();
g.stroke = xml.getNext();
g.transform = xml.getNext();
return g;
}
};
}
Due to the sequential nature of XML serialization/deserialization, formatting/parsing of XML attributes should always be performed before formatting/parsing of the XML content.
The mapping between classes and XML formats can be overriden
through XMLBinding instances.
Here is an example of serialization/deserialization:
// Creates a list holding diverse objects.
List list = new ArrayList();
list.add("John Doe");
list.add(null);
Map map = new FastMap();
map.put("ONE", 1);
map.put("TWO", 2);
list.add(map);
// Use of custom binding.
XMLBinding binding = new XMLBinding();
binding.setAlias(FastMap.class, "Map");
binding.setAlias(String.class, "String");
binding.setAlias(Integer.class, "Integer");
// Formats the list to XML .
OutputStream out = new FileOutputStream("C:/list.xml");
XMLObjectWriter writer = new XMLObjectWriter().setOutput(out).setBinding(binding);
writer.write(list, "MyList", ArrayList.class);
writer.close();
list.xml document produced:
<MyList>
<String value="John Doe"/>
<Null/>
<Map>
<Key class="String" value="ONE"/>
<Value class="Integer" value="1"/>
<Key class="String" value="TWO"/>
<Value class="Integer" value="2"/>
</Map>
</MyList>
// Reads back to a FastTable instance.
InputStream in = new FileInputStream("C:/list.xml");
XMLObjectReader reader = new XMLObjectReader().setInput(in).setBinding(binding);
FastTable table = reader.read("MyList", FastTable.class);
reader.close();
Note: Any type for which a text format is
defined can be represented as a XML attribute.
| Modifier and Type | Class and Description |
|---|---|
static class |
XMLFormat.Default
Returns the default XML format for any object having a
plain text format; this XML representation consists
of the plain text representation of the object as a "value" attribute. |
static class |
XMLFormat.InputElement
This class represents an input XML element (unmarshalling).
|
static class |
XMLFormat.OutputElement
This class represents an output XML element (marshalling).
|
| Modifier | Constructor and Description |
|---|---|
protected |
XMLFormat()
Default constructor.
|
| Modifier and Type | Method and Description |
|---|---|
boolean |
isReferenceable()
Indicates if the object serialized through this format can be referenced
to (default
true). |
T |
newInstance(Class<? extends T> cls,
XMLFormat.InputElement xml)
Allocates a new object of the specified class from the specified
XML input element.
|
abstract void |
read(XMLFormat.InputElement xml,
T obj)
Parses an XML input element into the specified object.
|
abstract void |
write(T obj,
XMLFormat.OutputElement xml)
Formats an object into the specified XML output element.
|
public boolean isReferenceable()
true). This method can be overriden to return
false if serialized objects are manipulated "by value".true if serialized object may hold a reference;
false otherwise.XMLReferenceResolverpublic T newInstance(Class<? extends T> cls, XMLFormat.InputElement xml) throws XMLStreamException
cls - the class of the object to return.xml - the XML input element.XMLStreamExceptionpublic abstract void write(T obj, XMLFormat.OutputElement xml) throws XMLStreamException
obj - the object to format.xml - the XMLElement destination.XMLStreamExceptionpublic abstract void read(XMLFormat.InputElement xml, T obj) throws XMLStreamException
xml - the XML element to parse.obj - the object created through newInstance(java.lang.Class<? extends T>, javolution.xml.XMLFormat.InputElement)
and to setup from the specified XML element.XMLStreamExceptionCopyright © 2005-2013 Javolution. All Rights Reserved.