繁体   English   中英

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

[英]Add/Modify an element to XML file using JAXB marshal

我正在使用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>

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

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM