我有一个遗留系统,我们向其发送硬编码的数据,以要求使用特定的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。
答案 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,这就是它放置该命名空间前缀的原因。