Understanding JAXB @XmlRootElement annotation
I recommend using the package level @XmlSchema
annotation to specify the namespace qualification for you model. A package level annotation goes in a special class called package-info
that contains the exact content as shown below. That annotation will mean that all elements in your document without an explicit namespace given will use that namespace.
org/example/foo/package-info.java
@XmlSchema( namespace = "http://www.example.org/foo", elementFormDefault = XmlNsForm.QUALIFIED)package org.example.foo;import javax.xml.bind.annotation.XmlNsForm;import javax.xml.bind.annotation.XmlSchema;
Overriding the Namespace
- You can override the namespace given in the
@XmlSchema
for all properties in a class using the@XmlType
annotation. - You can override the namespace for a given element using the namespace property on the
@XmlRootElement
or@XmlElement
annotation.
For More Information
@XmlRootElement annotation can be used to map a class or enum type to XML type.
When a top level class or an enum type is annotated with the @XmlRootElement annotation, then its value is represented as XML element in an XML document.
Follow the example given below to get more idea:
Associate an element with XML Schema type
// Example: Code fragment @XmlRootElement class Point { int x; int y; Point(int _x,int _y) {x=_x;y=_y;} } //Example: Code fragment corresponding to XML output marshal( new Point(3,5), System.out); <!-- Example: XML output --> <point> <x> 3 </x> <y> 5 </y> </point>