Add/Modify 使用 JAXB 编组的 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>
我想为这个枚举添加更多颜色,比如红色和白色。我们不想更新 xsd 或生成的 XML/Java 代码,因为它们不属于我们所有,我们希望保持原样。
选项 1。如果有一种方法可以读取 XSD,当它读取 xs:simpleType name="color" 时,我可以为枚举添加颜色,所以生成的 java 枚举具有所有需要的值
选项 2。如果我可以编写一个适配器来帮助我在生成的 Enum 中添加值
我已经检查了 XML 适配器,但覆盖它对我的情况没有帮助。由于它是一个枚举,我发现很难修改它,因为枚举在 Java
中是常量
由于很难在枚举中插入值,我们使用自定义的 JAXB 绑定将 "color" 元素从枚举转换为字符串类型。
<jaxb:bindings node="//xs:simpleType[@name='color']">
<jaxb:typesafeEnumClass map="false" />
</jaxb:bindings>
现在可以插入新值。我们知道这是有风险的,因为现在 "color" 元素可以接受任何字符串,但从我们的项目角度来看它对我们有用。
我正在使用 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。如果有一种方法可以读取 XSD,当它读取 xs:simpleType name="color" 时,我可以为枚举添加颜色,所以生成的 java 枚举具有所有需要的值
选项 2。如果我可以编写一个适配器来帮助我在生成的 Enum 中添加值
我已经检查了 XML 适配器,但覆盖它对我的情况没有帮助。由于它是一个枚举,我发现很难修改它,因为枚举在 Java
中是常量由于很难在枚举中插入值,我们使用自定义的 JAXB 绑定将 "color" 元素从枚举转换为字符串类型。
<jaxb:bindings node="//xs:simpleType[@name='color']">
<jaxb:typesafeEnumClass map="false" />
</jaxb:bindings>
现在可以插入新值。我们知道这是有风险的,因为现在 "color" 元素可以接受任何字符串,但从我们的项目角度来看它对我们有用。