gpt4 book ai didi

java - 编码(marshal)至 XML 时出现 FasterXML 问题

转载 作者:太空宇宙 更新时间:2023-11-04 06:38:28 25 4
gpt4 key购买 nike

我正在尝试使用 jackson-dataformat-xml 和 woodstax 将对象 marsahall 转换为 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;
....

最佳答案

我假设您需要以下之一:

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

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

除了(文档、博客)之外,要寻找输出的其他配置属性的地方是类:

  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 命名空间绑定(bind)。

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

关于java - 编码(marshal)至 XML 时出现 FasterXML 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24993773/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com