如何在使用Jersey,jaxb和jax-rs时设置xml命名空间

Joh*_*ohn 3 java jax-rs jaxb jersey

如何在使用Jersey,jaxb和jax-rs时设置xml命名空间

bdo*_*han 6

这都是使用JAXB注释完成的.以下几点是指您的域模型.

架构级别

您可以使用@XmlSchema包级别注释指定架构级别命名空间信息:

@XmlSchema(namespace = "http://www.example.org",
           elementFormDefault = XmlNsForm.QUALIFIED)
package org.example;

import javax.xml.bind.annotation.XmlSchema;
import javax.xml.bind.annotation.XmlNsForm;
Run Code Online (Sandbox Code Playgroud)

上述注释利用elementFormDefault将所有元素的名称空间默认为" http://www.example.org ".

类型级别

您可以使用@XmlType批注覆盖类型级别的名称空间:

@XmlType(namespace="http://www.example.org/foo")
Run Code Online (Sandbox Code Playgroud)

财产/现场级别

和/或您可以在注释本身上指定名称空间信息:

  • @XmlAttribute(命名空间= "http://www.example.org/bar")
  • @XmlElement(命名空间= "http://www.example.org/bar")
  • @XmlElementWrapper(命名空间= "http://www.example.org/bar")
  • @XmlRootElement(命名空间= "http://www.example.org/bar")

我有一篇博文,通过一个例子来演示这些概念: