# Element
Date: 2013-02-18

## org.simpleframework.xml
Annotation Type Element

    @Retention(value=RUNTIME)
    public @interface Element

The `Element` annotation is used to represent a field or method that appears as an XML element. Fields or methods that are annotated with this can be either primitive or compound, that is, represent an object that can be serialized and deserialized. Below is an example of the serialized format for a compound object.

If this annotates a type that contains no XML annotations then this will look for a suitable `Transform` for the type using the `Transformer`. For instance, all primitives and primitive arrays that are annotated with this will make use of a transform in order to convert its value to and from suitable XML representations.

        <example class="demo.Example">
           <data/>
        <example>

Each element may have any number of attributes and sub-elements representing fields or methods of that compound object. Attribute and element names can be acquired from the annotation or, if the annotation does not explicitly declare a name, it is taken from the annotated field or method. There are exceptions in some cases, for example, the `class` attribute is reserved by the serialization framework to represent the serialized type.

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.
`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.Class` `type` This represents an explicit type that should be used for the annotated field or method.

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

  Returns:
    the name of the XML element this represents
  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 for primitives only.

  Returns:
    true if the data is 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

### type

    public abstract java.lang.Class type

  This represents an explicit type that should be used for the annotated field or method. Typically this is used when the element forms part of a union group. It allows the union to distinguish the annotation to use based on the type.

  Returns:
    this returns the explicit type to use for this
  Default:
    void.class