Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "EclipseLink/UserGuide/MOXy/Type Level/Setting Up Namespace Information"

m (Replacing page with 'Please see http://www.eclipse.org/eclipselink/documentation/2.4/moxy/type_level002.htm')
 
(31 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{EclipseLink_UserGuide
+
Please see http://www.eclipse.org/eclipselink/documentation/2.4/moxy/type_level002.htm
|eclipselink=y
+
|eclipselinktype=MOXy
+
|info=y
+
|api=y
+
|apis= * [http://www.eclipse.org/eclipselink/api/latest/javax/xml/bind/annotation/XmlSchema.html XmlSchema]
+
|toc=y
+
}}
+
 
+
=Setting Up Namespace Information=
+
 
+
Most XML documents are qualified with a namespace. You can namespace-qualify elements of your Java class at the following levels:
+
 
+
* Package
+
* Type
+
* Field / Property
+
 
+
In most cases, package-level annotation is sufficient. You can use the other levels to customize your document. Use the the <tt>@XmlSchema</tt> annotation to specify the namespace.
+
 
+
== Package Level ==
+
 
+
Use the <tt>@XmlSchema</tt> annotation on the package to set a default namespace and specify that all elements in the package are qualified with the namespace.  This information is specified in a special Java source file, <tt>package-info.java</tt>.
+
 
+
<source lang="java">
+
@XmlSchema(
+
  namespace="http://www.example.org/package",
+
  elementFormDefault=XmlNsForm.QUALIFIED)
+
package example;
+
+
import javax.xml.bind.annotation.XmlNsForm;
+
import javax.xml.bind.annotation.XmlSchema;
+
</source>
+
 
+
This will produce the following XML:
+
 
+
<source lang="xml">
+
<customer xmlns="http://www.example.org/package">
+
  <name>Jane Doe</name>
+
</customer>
+
</source>
+
 
+
All elements are qualified with the "<tt>http://www.example.org/package</tt>" namespace.
+
 
+
==Type Level==
+
Type level annotations will override the package level namespace.
+
 
+
<source lang="java">
+
package example;
+
+
import javax.xml.bind.annotation.XmlAttribute;
+
import javax.xml.bind.annotation.XmlRootElement;
+
import javax.xml.bind.annotation.XmlType;
+
+
@XmlRootElement
+
@XmlType(namespace="http://www.example.org/type")
+
public class Customer {
+
+
    private long id;
+
    private String name;
+
+
    @XmlAttribute
+
    public long getId() {
+
        return id;
+
    }
+
+
    public void setId(long id) {
+
        this.id = id;
+
    }
+
+
    public String getName() {
+
        return name;
+
    }
+
+
    public void setName(String name) {
+
        this.name = name;
+
    }
+
+
}
+
</source>
+
 
+
This will produce the following XML:
+
 
+
<source lang="xml">
+
<ns2:customer
+
    xmlns="http://www.example.org/type"
+
    xmlns:ns2="http://www.example.org/package"
+
    id="123">
+
    <name>Jane Doe</name>
+
</ns2:customer>
+
</source>
+
 
+
Only elements inside the '''Customer''' type are qualified with the '''http://www.example.org/type''' namespace.
+
 
+
 
+
==Field/Property Level==
+
You can override the package or type namespaces at the property/field level. All attribute and element annotations accept the '''namespace''' parameter.
+
 
+
<source lang="java">
+
package example;
+
+
import javax.xml.bind.annotation.XmlAttribute;
+
import javax.xml.bind.annotation.XmlRootElement;
+
import javax.xml.bind.annotation.XmlType;
+
+
@XmlRootElement
+
@XmlType(namespace="http://www.example.org/type")
+
public class Customer {
+
+
    private long id;
+
    private String name;
+
+
    @XmlAttribute
+
    public long getId() {
+
        return id;
+
    }
+
+
    public void setId(long id) {
+
        this.id = id;
+
    }
+
+
    @XmlElement(namespace="http://www.example.org/property")
+
    public String getName() {
+
        return name;
+
    }
+
+
    public void setName(String name) {
+
        this.name = name;
+
    }
+
+
}
+
</source>
+
 
+
This will produce the following XML:
+
 
+
<source lang="xml">
+
<ns2:customer
+
    xmlns="http://www.example.org/property"
+
    xmlns:ns2="http://www.example.org/package"
+
    id="123">
+
    <name>Jane Doe</name>
+
</ns2:customer>
+
</source>
+
 
+
The '''Name''' element is qualified with the '''http://www.example.org/property''' namespace.
+
 
+
 
+
{{EclipseLink_MOXy
+
|previous=[[EclipseLink/UserGuide/MOXy/Type Level/Mapping to a Type or Element/Default Root Element|Default Root Element]]
+
|up=[[EclipseLink/UserGuide/MOXy/Type Level/Mapping to a Type or Element|Mapping to a Type or Element]]
+
|next=[[EclipseLink/UserGuide/MOXy/Type Level/Creating Objects|Creating Objects (Constructors & Factories)]]
+
|version=2.2.0
+
}}
+

Latest revision as of 09:49, 8 November 2012

Please see http://www.eclipse.org/eclipselink/documentation/2.4/moxy/type_level002.htm

Back to the top