更改JAXB名称空间

时间:2017-10-09 17:05:28

标签: java xml jaxb

我有一个遗留系统,我们向其发送硬编码的数据,以要求使用特定的XML命名空间。他们发布了XSD,我正在从中生成JAXB类。但是当我运行代码时,我的XML就像这样:

<ns3:field1>data</ns3:field1>

但遗留系统需要:

<custom:field1>data</custom:field1>

JAXB正在生成100%合法的XML,但遗留系统无法处理不同的命名空间。

我无法更改旧版系统或XSD。

除了做String.replace(“ns3:”,“custom:”)之外,有没有更好的方法让生成的XML以我需要的方式出现?我正在使用Java 8。

1 个答案:

答案 0 :(得分:1)

写package-info.java -

@XmlSchema(
    namespace = "http://your-namespace-url",
    elementFormDefault = XmlNsForm.QUALIFIED,
    xmlns = {
            @XmlNs(prefix = "", namespaceURI = "http://your-namespace-url"),
            @XmlNs(prefix = "custom", namespaceURI = "http://your-namespace-url/other")
    })

由于您没有定义package-info,这就是它放置该命名空间前缀的原因。