【问题标题】:Any way to modify xml prefix generated by JAXB without modify code?有什么方法可以在不修改代码的情况下修改 JAXB 生成的 xml 前缀?
【发布时间】:2011-10-18 22:04:26
【问题描述】:

我正在使用 JAXB 将对象编组为 xml,现在生成的 xml 就像

<QueryServiceElement xmlns="http://tools.ding.com/query">
</QueryServiceElement>

我想要的是:

<ts1:QueryServiceElement xmlns:ts1="http://tools.ding.com/query">
</ts1:QueryServiceElement>

由于代码已经在多个地方共享,所以我不能在 JAXB Marshaller 中使用 mapper 属性,而且我的 jaxb 也不支持 mapper 属性,它会抛出异常,有没有办法通过修改来做到这一点xsd 文件或 jaxb 模式绑定?

我尝试了很多方法,但都行不通。

【问题讨论】:

  • 我修正了你的格式。 XML(一般代码)可以通过缩进4个空格来输入和显示。

标签: namespaces xsd jaxb schema


【解决方案1】:

不幸的是,在生成的 XML 中生成(甚至使用)名称空间前缀的行为完全取决于编组器,与 XSD 无关。

http://blogs.oracle.com/enterprisetechtips/entry/customizing_jaxb 很好地解释了如何处理自定义命名空间前缀生成。从您的问题来看,您似乎已经意识到这一点。它是一个 JAXB 2.0+ 功能,所以如果您的 jaxb 实现不支持它,也许是时候获取更高版本了?

【讨论】:

  • 感谢您的 cmets,它很有帮助。虽然我使用的 jaxb 版本实际上是 2.1,但经过调试,我发现该实现不支持映射器属性,它抛出 PropertyException,我无法更新它,而因为我正在将 xml 编组为 SoapElement,然后我可以在 SoapElement 中重置一些前缀来解决这个问题。
猜你喜欢
  • 1970-01-01
  • 2021-04-21
  • 1970-01-01
  • 1970-01-01
  • 2018-03-18
  • 1970-01-01
  • 1970-01-01
  • 2015-07-03
  • 1970-01-01
相关资源
最近更新 更多