# ElementArray
Date: 2013-02-18

## org.simpleframework.xml
Annotation Type ElementArray

    @Retention(value=RUNTIME)
    public @interface ElementArray

The `ElementArray` annotation represents a method or field that is an array of elements. The array deserialized is the same type as the field or method, all entries within the array must be a compatible type. However, a `class` attribute can be used to override an entry, this must be an assignable type.

        <array length="3">
           <entry>
              <value>example text value</value>
           </entry>
           <entry>
              <value>some other value</value>
           </entry>
           <entry/>
        </array>

All null objects within the array are represented as an empty XML element so that they can be deserialized accurately. This ensures that the length attribute of the array is respected, as well as the index position of all serialized entries. The length of the array must be specified for deserialization to instantiate the array before the array values are instantiated. This is required to account for cyclical references in the object graph.

Author:
  Niall Gallagher

Optional Element Summary
`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 name of the XML element representing the entry within the array.
`java.lang.String` `name` This represents the name of the XML element.
`boolean` `required` Determines whether the element is required within the XML document.

### name

    public abstract java.lang.String name

  This represents the name of the XML element. Annotated fields or methods 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.

  Returns:
    the name of the XML element this represents
  Default:
    ""

### entry

    public abstract java.lang.String entry

  This is used to provide a name of the XML element representing the entry within the array. An entry name is optional and is used when the name needs to be overridden. This also ensures that entry, regardless of type has the same root name.

  Returns:
    this returns the entry XML element for each value
  Default:
    ""

### 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

### 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

### 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 array. 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