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

时间:2010-09-01 15:51:53

标签: jaxb jersey jax-rs

在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>

我想要类似的东西:

<?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>

谢谢, 卢卡斯

1 个答案:

答案 0 :(得分:3)

如果您使用MOXy 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的示例,请参阅: