我在使用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和:
成为com.sun.xml.bind.marshaller.NamespacePrefixMapper至关重要。我已经使用了另一个并获得了奇怪的例外。
它也不起作用 - 同样的问题仍然存在。这是我的映射器:
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);
答案 0 :(得分:-1)