我使用Spring Jaxb2Marshaller
将java对象转换为XML,反之亦然。我需要为xmlns
prefix
和value
设置动态值 - 意味着,考虑到示例
xmlns:abc="http://www.example.com"
其中prefix
为abc
value
http://www.example.com
必须是可配置的(从属性文件提供)。
请参阅包Product
com.test.abc
的示例xml
<abc:Product
xmlns:abc="http://www.example.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<abc:productId>252</abc:productId>
<abc:productName>XYZ</abc:productName>
</abc:Product>
要构建此xml,我使用以下配置
Spring Jaxb2Marshaller Bean配置
@Bean
public Jaxb2Marshaller getJaxb2Marshaller(){
Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
marshaller.setPackagesToScan("com.test.abc", "com.test.xyz");
Map<String,Object> propertiesMap = new HashMap<String,Object>();
propertiesMap.put("jaxb.formatted.output", true);
marshaller.setMarshallerProperties(propertiesMap);
return marshaller;
}
pack-info.java
@javax.xml.bind.annotation.XmlSchema(
namespace = "http://www.example.com",
elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED,
xmlns = { @javax.xml.bind.annotation.XmlNs(namespaceURI = "http://www.example.com", prefix="abc")})
package com.test.abc;
这里我是硬编码的xmlns前缀和值。我需要供应 xmlns前缀和属性文件中的值。我怎么能做到这一点?
我正在使用SpringBoot 1.3.3
答案 0 :(得分:0)
注释为difficult!
我能想到的唯一(和IDE不友好的)方式是:
(自定义)NamespacePrefixMapper将清除所有这些基于注释的限制/问题,并能更好地处理(运行时/弹簧)属性。
希望你成功!