1

使用 JAXB 2.1 RI 生成具有固定元素值的 XML 时运气不佳。我们正在使用 xjc 生成 XML 绑定代码并整理结果。

它适用于使用<xs:attribute fixed='something'/>和 JAXB 定制属性的属性fixedAttributeAsConstantProperty。对于元素,我们认为没有办法做到这一点。或者有吗?

作为一种解决方法,我们使用<xs:element default='something'/>了 which 变成@XmlElement(default='something'). 现在我的猜测是,您可以告诉编组器以某种方式解释default参数并生成具有相应内容的元素,例如<element>something</element>.

我查看了标准和 RI 供应商特定的编组器配置属性,但没有找到有用的东西。似乎有一个 xjc 插件可以做类似的事情[1],但如果没有标准的 JAXB 方式来做这件事,我会有点惊讶。

任何指针都非常感谢,谢谢。

[1] http://fisheye5.cenqua.com/browse/~raw,r=1.5/jaxb2-commons/www/default-value/index.html

4

2 回答 2

2

XML 模式规范仅处理解组,即确定源 XML 表示的验证后信息集。

JAXB 似乎在其对默认值的支持中反映了这一点,即主要用于阅读。例如,对默认属性的支持不会扩展到写入默认值,而只是扩展到读取(或使用 getter 从 Java 访问)

正如我所看到的,解决方案的最佳选择是扩展默认值插件以处理固定元素,方法是使字段为 final 并删除 setter。

插件的代码非常简单,真的!

于 2011-01-07T23:14:02.633 回答
0

有一个 maven-plugin 可以用来生成常量:https ://github.com/fbdo/jaxb2-fixed-value

于 2015-02-05T09:05:22.490 回答