使用 JAXB marshal 向 XML 文件添加/修改元素

用户837593

我正在使用 JAXB 从 XML 生成 java 代码,它有一个枚举

    <xs:simpleType name="color">
    <xs:restriction base="xs:string">
        <xs:enumeration value="Blue"/>
        <xs:enumeration value="Green"/>
        <xs:enumeration value="Yellow"/>
    </xs:restriction>
</xs:simpleType>

我想为这个枚举添加更多颜色,比如红色和白色。我们不想更新 xsd 或生成的 XML/Java 代码,因为它们不归我们所有,我们希望保持原样。

选项 1. 如果有一种方法可以在读取 xs:simpleType name="color" 时读取 XSD,我可以为枚举添加颜色,因此生成的 java 枚举具有所有需要的值

选项 2. 如果我可以编写一个适配器来帮助我在生成的 Enum 中添加值

我已经检查了 XMLAdapter 但覆盖它对我的情况没有帮助。由于它是一个枚举,我发现很难修改它,因为枚举在 Java 中是不变的

用户837593

由于很难在枚举中插入值,我们使用定制的 JAXB 绑定将“color”元素从 Enum 转换为 String 类型。

<jaxb:bindings node="//xs:simpleType[@name='color']">
  <jaxb:typesafeEnumClass map="false" />
</jaxb:bindings>

现在可以插入新值。我们知道这是有风险的,因为现在“颜色”元素可以接受任何字符串,但从我们的项目角度来看,它对我们有用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章