7

我有一个通过 Spring MVC Web 服务返回的数据的 ATOM-XML 表示。我正在使用 JAXB 进行序列化,我有许多命名空间,但我希望将默认命名空间设置为没有前缀的 Atom。这是我到目前为止所拥有的,package-info.java 但原子前缀被设置为 ns3。

@XmlSchema(namespace = com.mycomponay.foo.ATOM_NAMESPACE,
xmlns = { 
    @XmlNs(prefix = "foo", namespaceURI = com.mycomponay.foo.NAMESPACE_FOO),
}, elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
package com.mycompany.web;

import javax.xml.bind.annotation.XmlNs;

我还注意到命名空间显示在 chrome 中,但没有显示在 Firefox 中。

4

2 回答 2

11

尝试为要显示为默认名称的名称空间添加@XmlNs带有前缀的注释。""

@XmlSchema(
    namespace = com.mycompany.foo.ATOM_NAMESPACE,
    xmlns = { 
        @XmlNs(prefix = "", namespaceURI = com.mycompany.foo.ATOM_NAMESPACE),
        @XmlNs(prefix = "foo", namespaceURI = com.mycompany.foo.NAMESPACE_FOO)
    }, 
    elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
package com.mycompany.web;

import javax.xml.bind.annotation.*;

笔记:

注释中指定的命名空间@XmlSchema旨在影响 XML 模式的生成,并且不能保证在将对象模型编组为 XML 时使用。但是EclipseLink JAXB (MOXy)和最新版本的JAXB 参考实现将尽可能使用它们。

了解更多信息

于 2013-07-05T13:28:14.753 回答
1

如果您对 XML 元素使用单独的类,请使用 namespace="" 对其进行注释,这样会起作用。

于 2014-08-18T23:58:00.033 回答