JAXB如何在xml中删除默认的ns2名称空间前缀

在创建请求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 {
...
}
HAWOSHISHUI 回答:JAXB如何在xml中删除默认的ns2名称空间前缀

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3140109.html

大家都在问