org.simpleframework.xml
Annotation Type ElementMap
@Retention(value=RUNTIME)
public @interface ElementMap
The ElementMap
annotation represents a method or field
that is a Map
for storing key value pairs. The map
object deserialized is typically of the same type as the field.
However, a class
attribute can be used to override the
field type, however the type must be assignable.
<map class="java.util.HashMap">
<entry key="one">value one</entry>
<entry key="two">value two</entry>
<entry key="three">value three</entry>
</map>
If a class
attribute is not provided and the type or
the field or method is abstract, a suitable match is searched for
from the maps available from the Java collections framework. This
annotation can support both primitive and composite values and
keys enabling just about any configuration to be used.
<map class="java.util.HashMap">
<entry key="1">
<value>value one</value>
</entry>
<entry key="2">
<value>value two</value>
</entry>
<entry key="3">
<value>value three</value>
</entry>
</map>
The above XML is an example of the output for an composite value
object. Composite and primitive values can be used without any
specified attributes, in such a case names for primitives are the
names of the objects they represent. Also, if desired these
default names can be overridden using the provided attributes
making the resulting XML entirely configurable.
- Author:
- Niall Gallagher
Optional Element Summary |
boolean |
attribute
Represents whether the key value is to be an attribute or an
element. |
boolean |
data
This is used to determine whether the element data is written
in a CDATA block or not. |
boolean |
empty
This is used to determine if an optional field or method can
remain null if it does not exist. |
java.lang.String |
entry
This is used to provide a the name of the entry XML element
that wraps the key and value elements. |
boolean |
inline
Determines whether the element list is inlined with respect
to the parent XML element. |
java.lang.String |
key
This is used to provide a key XML element for each of the
keys within the map. |
java.lang.Class |
keyType
Represents the type of key the element map contains. |
java.lang.String |
name
This represents the name of the XML element. |
boolean |
required
Determines whether the element is required within the XML
document. |
java.lang.String |
value
This is used to provide a value XML element for each of the
values within the map. |
java.lang.Class |
valueType
Represents the type of value the element map contains. |
name
public abstract java.lang.String name
- This represents the name of the XML element. Annotated fields
can optionally provide the name of the element. If no name is
provided then the name of the annotated field or method will
be used in its place. The name is provided if the field or
method name is not suitable as an XML element name. Also, if
the list is inline then this must not be specified.
- Returns:
- the name of the XML element this represents
- Default:
- ""
entry
public abstract java.lang.String entry
- This is used to provide a the name of the entry XML element
that wraps the key and value elements. If specified the entry
value specified will be used instead of the default name of
the element. This is used to ensure the resulting XML is
configurable to the requirements of the generated XML.
- Returns:
- this returns the entry XML element for each entry
- Default:
- ""
value
public abstract java.lang.String value
- This is used to provide a value XML element for each of the
values within the map. This essentially wraps the entity to
be serialized such that there is an extra XML element present.
This can be used to override the default names of primitive
values, however it can also be used to wrap composite values.
- Returns:
- this returns the value XML element for each value
- Default:
- ""
key
public abstract java.lang.String key
- This is used to provide a key XML element for each of the
keys within the map. This essentially wraps the entity to
be serialized such that there is an extra XML element present.
This can be used to override the default names of primitive
keys, however it can also be used to wrap composite keys.
- Returns:
- this returns the key XML element for each key
- Default:
- ""
keyType
public abstract java.lang.Class keyType
- Represents the type of key the element map contains. This
type is used to deserialize the XML entry key from the map.
The object typically represents the deserialized type, but can
represent a subclass of the type deserialized as determined
by the
class
attribute value for the map. If
this is not specified then the type can be determined from the
generic parameter of the annotated Map
object.
- Returns:
- the type of the entry key deserialized from the XML
- Default:
- void.class
valueType
public abstract java.lang.Class valueType
- Represents the type of value the element map contains. This
type is used to deserialize the XML entry value from the map.
The object typically represents the deserialized type, but can
represent a subclass of the type deserialized as determined
by the
class
attribute value for the map. If
this is not specified then the type can be determined from the
generic parameter of the annotated Map
object.
- Returns:
- the type of the entry value deserialized from the XML
- Default:
- void.class
attribute
public abstract boolean attribute
- Represents whether the key value is to be an attribute or an
element. This allows the key to be embedded within the entry
XML element allowing for a more compact representation. Only
primitive key objects can be represented as an attribute. For
example a
java.util.Date
or a string could be
represented as an attribute key for the generated XML.
- Returns:
- true if the key is to be inlined as an attribute
- Default:
- false
required
public abstract boolean required
- Determines whether the element is required within the XML
document. Any field marked as not required will not have its
value set when the object is deserialized. If an object is to
be serialized only a null attribute will not appear as XML.
- Returns:
- true if the element is required, false otherwise
- Default:
- true
data
public abstract boolean data
- This is used to determine whether the element data is written
in a CDATA block or not. If this is set to true then the text
is written within a CDATA block, by default the text is output
as escaped XML. Typically this is useful when this annotation
is applied to an array of primitives, such as strings.
- Returns:
- true if entries are to be wrapped in a CDATA block
- Default:
- false
inline
public abstract boolean inline
- Determines whether the element list is inlined with respect
to the parent XML element. An inlined element list does not
contain an enclosing element. It is simple a sequence of
elements that appear one after another within an element.
As such an inline element list must not have a name.
- Returns:
- this returns true if the element list is inline
- Default:
- false
empty
public abstract boolean empty
- This is used to determine if an optional field or method can
remain null if it does not exist. If this is false then the
optional element is given an empty map. This is a convenience
attribute which avoids having to check if the element is null
before providing it with a suitable default instance.
- Returns:
- false if an optional element is always instantiated
- Default:
- true