我正在尝试使用jackson-dataformat-xml和woodstax将对象转换为XML,但是它添加了额外的命名空间前缀wstxns1。有什么建议吗?
My Beans如下所示
@JacksonRootElement(localname="Blah" namespace="http://something"
Bla {
@JacksonXMLProperty(localname="SomeProperty" namespace="http://something"
String SomePropety;
@JacksonXMLProperty(localname="SomeClass" namespace="http://something-different"
Class SomeClass;
....
答案 0 :(得分:1)
我假设你想要以下之一:
XMLStreamWriter
允许这样做)。Jackson XML模块此时没有处理前缀的机制(尽管欢迎RFE和拉取请求)。 但是除了基本的Stax API(非常有限)之外,Woodstox本身具有相当的可配置性。
为了输出的其他配置属性,需要超越(文档,博客)的地方是类:
org.codehaus.stax2.XMLOutputFactory2
用于Stax2扩展属性(由Woodstox和Aalto实现)com.ctc.wstx.api.WstxOutputProperties
用于Woodstox特定属性并且这些属性通过XMLOutputFactory.setProperty()
设置,与标准Stax属性相同。
此处感兴趣的属性为org.codehaus.stax2.XMLOutputFactory2#P_AUTOMATIC_NS_PREFIX
,默认为" wstxns"但可以更改为任何其他有效的XML id String。
除此之外,还可以为Jackson XML模块指定预先配置的XMLStreamWriter
。如果是这样,也可以使用标准的Stax方法(" writeNamespace()"我认为?)来创建特定的前缀到URL命名空间绑定。
最后,杰克逊的邮件列表是提问的最佳地点。像我这样的开发人员也会阅读StackOverflow和其他论坛,但是你注意到延迟往往会更高。