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.
Difference between revisions of "EclipseLink/UserGuide/MOXy/Type Level/Setting Up Namespace Information"
(→Package Level) |
|||
Line 17: | Line 17: | ||
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. | 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 == | == Package Level == | ||
Line 42: | Line 43: | ||
All elements are qualified with the "<tt><nowiki>http://www.example.org/package</nowiki></tt>" namespace. | All elements are qualified with the "<tt><nowiki>http://www.example.org/package</nowiki></tt>" namespace. | ||
− | ==Type Level== | + | |
+ | == Type Level == | ||
+ | |||
Type level annotations will override the package level namespace. | Type level annotations will override the package level namespace. | ||
<source lang="java"> | <source lang="java"> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
@XmlRootElement | @XmlRootElement | ||
@XmlType(namespace="http://www.example.org/type") | @XmlType(namespace="http://www.example.org/type") | ||
public class Customer { | public class Customer { | ||
− | + | private String name; | |
− | + | private String account; | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
} | } | ||
</source> | </source> | ||
Line 82: | Line 60: | ||
<source lang="xml"> | <source lang="xml"> | ||
− | <ns2:customer | + | <ns2:customer xmlns="http://www.example.org/type" xmlns:ns2="http://www.example.org/package"> |
− | + | ||
− | + | ||
− | + | ||
<name>Jane Doe</name> | <name>Jane Doe</name> | ||
+ | <account>36328721</account> | ||
</ns2:customer> | </ns2:customer> | ||
</source> | </source> | ||
− | Only elements inside the | + | Only elements inside the <tt>Customer</tt> 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 '''namespace''' parameter. | You can override the package or type namespaces at the property/field level. All attribute and element annotations accept the '''namespace''' parameter. | ||
Revision as of 17:11, 6 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;
This will produce the following XML:
<customer xmlns="http://www.example.org/package"> <name>Jane Doe</name> </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.
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; } }
This will produce the following XML:
<ns2:customer xmlns="http://www.example.org/property" xmlns:ns2="http://www.example.org/package" id="123"> <name>Jane Doe</name> </ns2:customer>
The Name element is qualified with the http://www.example.org/property namespace.