我试图使用jackson-dataformat-xml和woodstax将对象编组为XML,但它添加了其他名称空间前缀wstxns1。有什么建议么 ?
我的豆子如下图
@JacksonRootElement(localname="Blah" namespace="http://something"
Bla {
@JacksonXMLProperty(localname="SomeProperty" namespace="http://something"
String SomePropety;
@JacksonXMLProperty(localname="SomeClass" namespace="http://something-different"
Class SomeClass;
....
最佳答案
我假设您想要以下之一:
定义“默认名称空间”(一个没有前缀)以绑定到元素的URI,以避免出现前缀-一次只能用于一个名称空间。要么,
使Woodstox使用其他基础作为它根据需要生成的前缀
您想提出使用前缀的建议(因为Stax 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字符串。
除此之外,可能还可以指定要使用的Jackson XML模块的预配置XMLStreamWriter
。如果是这样,也可以使用标准的Stax方法(我认为是“ writeNamespace()”?)来创建特定的URL前缀到名称空间的绑定。
最后,杰克逊邮件列表是问问题的最佳场所。像我这样的开发人员也确实阅读过StackOverflow和其他论坛,但是正如您所注意到的,延迟往往会更高。