Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Difference between revisions of "EclipseLink/UserGuide/MOXy/Type Level/Setting Up Namespace Information"
(→Package Level) |
|||
Line 16: | Line 16: | ||
* Field / Property | * Field / Property | ||
− | In most cases, package-level annotation is sufficient. You can use the other levels to customize your document. Use the the | + | 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 == | == Package Level == | ||
− | Use the | + | 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"> | <source lang="java"> | ||
Line 33: | Line 33: | ||
</source> | </source> | ||
− | Using a simple | + | Using a simple '''Customer''' class, this will produce the following XML: |
<source lang="xml"> | <source lang="xml"> | ||
Line 69: | Line 69: | ||
</source> | </source> | ||
− | Only elements inside the | + | Only elements inside the '''Customer''' type are qualified with the "<tt><nowiki>http://www.example.org/type</nowiki></tt>" namespace. |
== Field/Property Level == | == Field/Property Level == | ||
− | You can override the package or type namespaces at the property/field level. All attribute and element annotations accept the | + | 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"> | <source lang="java"> | ||
Line 99: | Line 99: | ||
</source> | </source> | ||
− | Only the | + | Only the '''account''' element is qualified with the "<tt><nowiki>http://www.example.org/property</nowiki></tt>" namespace. |
Revision as of 15:14, 14 January 2011
EclipseLink MOXy
EclipseLink | |
Website | |
Download | |
Community | |
Mailing List • Forums • IRC • mattermost | |
Issues | |
Open • Help Wanted • Bug Day | |
Contribute | |
Browse Source |
Key API
Contents
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.
@XmlSchema( namespace="http://www.example.org/package", elementFormDefault=XmlNsForm.QUALIFIED) package example; import javax.xml.bind.annotation.XmlNsForm; import javax.xml.bind.annotation.XmlSchema;
Using a simple Customer class, this will produce the following XML:
<customer xmlns="http://www.example.org/package"> <name>Jane Doe</name> <account>36328721</account> </customer>
All elements are qualified with the "http://www.example.org/package" namespace.
Type Level
Type level annotations will override the package level namespace.
@XmlRootElement @XmlType(namespace="http://www.example.org/type") public class Customer { private String name; private String account; ... }
This will produce the following 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>
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.
@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; ... }
This will produce the following 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>
Only the account element is qualified with the "http://www.example.org/property" namespace.