package com.fasterxml.jackson.dataformat.xml.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

Annotation that can be used to provide XML-specific configuration for properties, above and beyond what JsonProperty contains. It is mainly an alternative to using JAXB annotations.

Note that annotation may be used on

  • Fields
  • Setter and getter methods
  • Arguments (parameters) of "Creators" -- annotated constructors and/or static factory methods
but it can NOT be used on argument/parameter of setter methods (or rather while compiler allows that, will have no effect) -- setter method itself needs to be annotated.

Note that since 2.12 there is no need to use this property over JsonProperty just to define XML namespace, as @JsonProperty has namespace property.

/** * Annotation that can be used to provide XML-specific configuration * for properties, above and beyond what * {@link com.fasterxml.jackson.annotation.JsonProperty} contains. * It is mainly an alternative to using JAXB annotations. *<p> * Note that annotation may be used on *<ul> * <li>Fields * </li> * <li>Setter and getter methods * </li> * <li>Arguments (parameters) of "Creators" -- annotated constructors and/or * static factory methods * </li> * </ul> * but it can NOT be used on argument/parameter of setter methods (or rather * while compiler allows that, will have no effect) -- setter method itself * needs to be annotated. *<p> * Note that since 2.12 there is no need to use this property over * {@link com.fasterxml.jackson.annotation.JsonProperty} just to define XML namespace, * as {@code @JsonProperty} has {@code namespace} property. */
@Target({ElementType.ANNOTATION_TYPE, ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER}) @Retention(RetentionPolicy.RUNTIME) public @interface JacksonXmlProperty { boolean isAttribute() default false; String namespace() default ""; String localName() default ""; }