При добавлении 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 {
...
}