在创建请求XML的默认“ ns2”前缀中添加了名称空间声明。
我正在获取以下格式的请求XML。
<ns2:ARTNCIS xmlns:ns2="http://namespace_uri">
<ARTNCIS>
<IDOCDATA>
...
</IDOCDATA>
</ARTNCIS>
</ns2:ARTNCIS>
期望的请求XML应该如下所示,
<ARTNCIS xmlns="http://namespace_uri">
<ARTNCIS>
<IDOCDATA>
...
</IDOCDATA>
</ARTNCIS>
</ARTNCIS>
下面提供的是package-info.java文件。
@XmlSchema(
namespace = "http://namespace_uri",
elementFormDefault = javax.xml.bind.annotation.XmlNsForm.UNQUALIFIED,
xmlns={@XmlNs(prefix = "", namespaceURI = "http://namespace_uri")}
)
package com.vam.abc.motor;
import javax.xml.bind.annotation.XmlNs;
import javax.xml.bind.annotation.XmlSchema;
在封送处理JAXB元素时,添加了NamespacePrefixMapper来删除默认的“ ns2”前缀。查找以下代码,
NamespacePrefixMapper mapper = new NamespacePrefixMapper() {
public String getPreferredPrefix(String namespaceUri, String suggestion, boolean requirePrefix) {
if ("http://namespace_uri".equals(namespaceUri) && !requirePrefix)
return "";
return suggestion;
}
};
marshaller.setProperty("com.sun.xml.bind.namespacePrefixMapper", mapper);
marshaller.marshal(reqObject, document);
下面是我的根元素声明。
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = { "artncis" })
@XmlRootElement(name = "ARTNCIS")
public class ARTNCIS {
...
}