【问题标题】:JAXB default value for null elements when marshalling编组时空元素的 JAXB 默认值
【发布时间】:2014-11-19 09:23:30
【问题描述】:

在对 JAXB 对象进行 编组 时,我想为生成的 XML 设置一些默认值。

我不想使用nillable=true,因为它会生成带有不必要xsi:nil="true" 的空标签,这不是用于设置默认值。相反,我想生成带有一些占位符字符的 XML,例如“?”。

用例:我将构建一个用于 WebService 测试的工具。我需要将整个请求 xml 呈现给用户(如 SOAPUI)。

【问题讨论】:

  • 这仅用于解组。
  • 为什么不在编组之前在 JAXB 对象中设置这个值?
  • 然后我将不得不编写大而复杂的基于反射的代码。假设在我的情况下这几乎是不可能的。我试图利用 JAXB 来完成这项任务。

标签: java xml jaxb marshalling


【解决方案1】:

用例:我将构建一个用于 WebService 测试的工具。我在那里 需要将整个请求 xml 呈现给用户(如 SOAPUI)。

占位符字符的想法实际上行不通。例如,? 是字符串的正常默认值,但不是 int、布尔值或大多数复杂值(即表示客户的嵌套地址信息)。相反,您需要一个反映类型的值。

然后我将不得不编写大型而复杂的基于反射的代码。只是假设 这在我的情况下几乎是不可能的。

这个反射代码可能不会像你想象的那么糟糕。快速搜索可能还会显示使用“虚拟”数据填充对象的库。将其与 JAXB 连接时,您可以利用 Marshaller.Listener 在前编组事件上填充对象。

【讨论】:

  • 谢谢,最终使用反射实现。一种初始化整个对象图的递归方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-16
相关资源
最近更新 更多