Jaxb 如何在Jersey(JAX-WS)上自定义名称空间前缀

Jaxb 如何在Jersey(JAX-WS)上自定义名称空间前缀,jaxb,jersey,jax-rs,Jaxb,Jersey,Jax Rs,在Jersey上序列化资源时,我希望在某些情况下使用名称空间 有没有办法自定义jersey上的名称空间前缀 默认值: <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <order xmlns:ns2="http://www.w3.org/2005/Atom"> <price>123</price> <ns2:link rel="duh" href="/abc/123"/> <ns

在Jersey上序列化资源时,我希望在某些情况下使用名称空间

有没有办法自定义jersey上的名称空间前缀

默认值:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <order xmlns:ns2="http://www.w3.org/2005/Atom"> <price>123</price> <ns2:link rel="duh" href="/abc/123"/> <ns2:link rel="abc" href="/def/234"/> </order> 123 我想要像这样的东西:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <order xmlns:atom="http://www.w3.org/2005/Atom"> <price>123</price> <atom:link rel="duh" href="/abc/123"/> <atom:link rel="abc" href="/def/234"/> </order> 123 谢谢, Lucas

如果使用JAXB实现,则可以使用@XmlSchema包级注释控制前缀:

@javax.xml.bind.annotation.XmlSchema(  
    xmlns = {  
          @javax.xml.bind.annotation.XmlNs(prefix = "atom", namespaceURI = "http://www.w3.org/2005/Atom")  
            })  
    package org.example.domain;  
要使用MOXy JAXB,您需要在模型类中有一个名为JAXB.properties的文件,其中包含以下条目:

javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory
有关将MOXy与Jersey一起使用的示例,请参见:


听起来不错=)所以标准JAXB无法做到这一点?JAXB标准(JSR-222)没有指定实现这一点的方法。MOXy-JAXB实现利用标准注释来获得所需的行为。Metro JAXB(参考实现)提供了一个名为NamespacePrefixMapper的扩展来实现这个结果:是否可以在Grizzly上更改JAXB实现?属性不起作用,init参数也不起作用。我必须在应用服务器上部署我的应用程序?它正在工作。。。maven没有将jaxb.properties导出到类路径中。谢谢=)请你看看我的问题: