如何使用JAXB设置默认命名空间(JDK 7)

时间:2015-04-09 13:17:38

标签: java xml jaxb

我在使用JAXB设置默认命名空间时遇到问题。我已经按照here提示,但问题仍然存在。以下是我的package-info:

@XmlSchema(
        namespace = "my/xml/namespace",
        xmlns = {
                @XmlNs(namespaceURI="my/xml/namespace",prefix=""),
        },
        elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
package my.xml.namespace;
import javax.xml.bind.annotation.XmlSchema;
import javax.xml.bind.annotation.XmlNs;
import javax.xml.XMLConstants;;

但是仍然创建xml看起来像这样:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:resp xmlns:ns2="my/xml/namespace">
....
</ns2:resp>

我想摆脱这些前缀但是没有想法。任何人都知道为什么?

更新

我遵循建议并实现NamespacePrefixMapper和:

  1. 成为com.sun.xml.bind.marshaller.NamespacePrefixMapper至关重要。我已经使用了另一个并获得了奇怪的例外。

  2. 它也不起作用 - 同样的问题仍然存在。这是我的映射器:

    NamespacePrefixMapper mapper = new NamespacePrefixMapper(){

            @Override
            public String getPreferredPrefix(String namespaceUri, String suggestion, boolean requirePrefix)
            {
                if("amc/xml/pay03_entryresponse".equals(namespaceUri)) {
                    return "";
                }else return suggestion;
            }
    
        };
        marshaller.setProperty("com.sun.xml.bind.namespacePrefixMapper", mapper);
    

1 个答案:

答案 0 :(得分:-1)