【问题标题】:FasterXML Issues while marsahaling to XML编组到 XML 时的 FasterXML 问题
【发布时间】:2014-07-28 10:58:06
【问题描述】:

我正在尝试使用 jackson-dataformat-xml 和 woodstax 将对象编组为 XML,但它添加了额外的命名空间前缀 wstxns1。有什么建议吗?

我的 Bean 如下所示

    @JacksonRootElement(localname="Blah" namespace="http://something"
    Bla {

    @JacksonXMLProperty(localname="SomeProperty" namespace="http://something"
    String SomePropety;

 @JacksonXMLProperty(localname="SomeClass" namespace="http://something-different"
    Class SomeClass;
    ....

【问题讨论】:

  • 你试过什么?我知道有很多这方面的教程,你应该在寻求帮助之前从那里开始。
  • 无法重现。您使用的是哪个版本的 Jackson 和 Woodstox?
  • 杰克逊 - 2.3 和 WoodStox 4.1.4
  • @JamesKingsbery - 问题是 jackson-dataformat-xml 和 woodstox 没有太多的教程,不管有什么,它们都简单明了。他们在 Stackoverflow 上也不是很活跃,我在 16 小时后得到回复.. 将其与此处询问的任何其他 Q 进行比较.. 谷歌搜索也会导致有限的搜索结果......
  • @user1428716 仍然无法重现。能否贴出转换为 XML 的代码?

标签: java xml jackson fasterxml woodstox


【解决方案1】:

我假设您想要以下之一:

  1. 定义“默认命名空间”(一个没有前缀的命名空间)以绑定到元素的 URI,以避免前缀——这一次只能用于单个命名空间。或者,
  2. 让 Woodstox 使用其他一些基础作为它根据需要生成的前缀
  3. 您想提出使用前缀的建议(因为 Stax XMLStreamWriter 允许这样做)。

Jackson XML 模块目前没有处理前缀的机制(尽管欢迎 RFE 和拉取请求)。 但除了基本的 Stax API(非常有限)之外,Woodstox 本身具有相当多的可配置性。

除了(文档、博客)之外,还有其他用于输出的配置属性的地方是类:

  1. org.codehaus.stax2.XMLOutputFactory2 用于 Stax2 扩展属性(由 Woodstox 和 Aalto 实现)
  2. com.ctc.wstx.api.WstxOutputProperties 用于 Woodstox 特定属性

这些属性是通过XMLOutputFactory.setProperty() 设置的,与标准的Stax 属性相同。

此处感兴趣的属性是org.codehaus.stax2.XMLOutputFactory2#P_AUTOMATIC_NS_PREFIX,默认为“wstxns”,但可以更改为任何其他有效的 XML id 字符串。

除此之外,还可以指定预配置的XMLStreamWriter 供 Jackson XML 模块使用。如果是这样,也可以使用标准的 Stax 方法(我认为是“writeNamespace()”?)来创建特定的前缀到 URL 命名空间绑定。

最后,Jackson 邮件列表是提问的最佳场所。像我这样的开发人员也会阅读 StackOverflow 和其他论坛,但正如您所注意到的,延迟往往更高。

【讨论】:

  • 感谢您的意见
  • 不客气,我希望我们能够解决您遇到的问题并解决您的用例——像 Jackson 这样的库在活跃用户的帮助下得到最大的改进。
  • @StaxMan 提出解决方案已经有一段时间了。由于我遇到了同样的问题,我想更明确地说明这一点,因为从 Jackson 2.11 开始,WstxInputProperties 不映射 Stax2 属性 P_AUTOMATIC_NS_PREFIX。这个简单的行将删除(或更改,如果需要的话)默认前缀:xmlMapper.getFactory().getXMLOutputFactory().setProperty("org.codehaus.stax2.automaticNsPrefix", "");
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多