|
|
(18 intermediate revisions by 2 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 '''@XmlSchema''' annotation to specify the namespace.
| + | |
− | | + | |
− | | + | |
− | == Package Level ==
| + | |
− | | + | |
− | Use the '''@XmlSchema''' 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, '''package-info.java'''.
| + | |
− | | + | |
− | <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>
| + | |
− | | + | |
− | Using a simple '''Customer''' class, this will produce the following XML:
| + | |
− | | + | |
− | <source lang="xml">
| + | |
− | <customer xmlns="http://www.example.org/package">
| + | |
− | <name>Jane Doe</name>
| + | |
− | <account>36328721</account>
| + | |
− | </customer>
| + | |
− | </source>
| + | |
− | | + | |
− | All elements are qualified with the "<tt><nowiki>http://www.example.org/package</nowiki></tt>" namespace.
| + | |
− | | + | |
− | | + | |
− | == Type Level ==
| + | |
− | | + | |
− | Type level annotations will override the package level namespace.
| + | |
− | | + | |
− | <source lang="java">
| + | |
− | package example;
| + | |
− | | + | |
− | @XmlRootElement
| + | |
− | @XmlType(namespace="http://www.example.org/type")
| + | |
− | public class Customer {
| + | |
− | private String name;
| + | |
− |
| + | |
− | private String account;
| + | |
− | | + | |
− | ...
| + | |
− | }
| + | |
− | </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">
| + | |
− | <name>Jane Doe</name>
| + | |
− | <account>36328721</account>
| + | |
− | </ns2:customer>
| + | |
− | </source>
| + | |
− | | + | |
− | Only elements inside the '''Customer''' type are qualified with the "<tt><nowiki>http://www.example.org/type</nowiki></tt>" 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;
| + | |
− | | + | |
− | @XmlRootElement
| + | |
− | @XmlAccessorType(XmlAccessType.FIELD)
| + | |
− | @XmlType(namespace="http://www.example.org/type")
| + | |
− | public class Customer {
| + | |
− | private String name;
| + | |
− | | + | |
− | @XmlElement(namespace="http://www.example.org/property")
| + | |
− | private String account;
| + | |
− | | + | |
− | ...
| + | |
− | }
| + | |
− | </source>
| + | |
− | | + | |
− | This will produce the following XML:
| + | |
− | | + | |
− | <source lang="xml">
| + | |
− | <ns3:customer xmlns="http://www.example.org/type" xmlns:ns2="http://www.example.org/property" xmlns:ns3="http://www.example.org/package">
| + | |
− | <name>Jane Doe</name>
| + | |
− | <ns2:account>36328721</ns2:account>
| + | |
− | </ns3:customer>
| + | |
− | </source>
| + | |
− | | + | |
− | Only the '''account''' element is qualified with the "<tt><nowiki>http://www.example.org/property</nowiki></tt>" 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
| + | |
− | }}
| + | |