我试图使用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和其他论坛,但是正如您所注意到的,延迟往往会更高。

09-05 00:43