Please consider to use annotation parameters only to achieve backward compatibility. Otherwise feel free to file issues about serialization cosmetics.
XCollection
annotation intended to customize list and set serialization.
Two styles are provided:
v1
:
<option name="propertyName"> <option value="value1" /> <option value="valueN" /> </option>
v2
:
<propertyName> <option value="$value" /> </propertyName>
Where second-level option
it is item element (use elementName
to customize element name) and
value
it is value attribute (use valueAttributeName
to customize attribute name).
Because of backward compatibility, v1
style is used by default. In the examples v2
style is used.
Value of primitive type wrapped into element named option
. valueAttributeName
allows you to customize name of value attribute.
Empty name is allowed — in this case value will be serialized as element text.
valueAttributeName = "name"
<propertyName> <option name="$value1" /> <option name="$valueN" /> </propertyName>
valueAttributeName = ""
<propertyName> <option>$value1</option> <option>$valueN</option> </propertyName>
XMap
annotation intended to customize map serialization and to enable new serialization format.
With XMap
annotation:
<propertyName> <entry key="key1" value="value1" /> <entry key="keyN" value="valueN" /> </propertyName>
Without XMap
annotation:
<option name="propertyName"> <map> <entry key="key1" value="value1" /> <entry key="keyN" value="valueN" /> </map> </option>
So, it is recommended to always specify XMap
annotation.