更改JAXB名称空间
问题描述:
我有一个遗留系统,我们发送的数据是硬编码的,以要求使用特定的XML名称空间。他们已经发布了XSD,并且从中生成了JAXB类。但是,当我运行的代码,我的XML出来是这样的:更改JAXB名称空间
<ns3:field1>data</ns3:field1>
但遗留系统要求:
<custom:field1>data</custom:field1>
JAXB时产生100%合法的XML,但传统系统无法处理命名空间不同。
我无法更改旧版系统或XSD。
有没有什么更好的方法来使得生成的XML以我需要的方式出现,除了做String.replace(“ns3:”,“custom:”)?我使用Java 8
答
写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")
})
当你没有定义包的信息,这就是为什么它把该命名空间前缀。
是的。您可以使用'XmlFilterImpl'今天只有我用来忽略命名空间的答案https://stackoverflow.com/questions/46637547/how-do-i-parse-xml-content-that-may-or-may-not-have -a-namespace/46639524#46639524您可以根据您的要求修改命名空间。获取更多细节。 – Optional
似乎问题不是关于命名空间,而是关于它的前缀。如果是这样,我想链接http://blog.bdoughan.com/2011/11/jaxb-and-namespace-prefixes.html可能会帮助你 – Vadim