gpt4 book ai didi

java - 使用 JAXB marshal 添加/修改 XML 文件中的元素

转载 作者:行者123 更新时间:2023-12-02 04:49:56 25 4
gpt4 key购买 nike

我正在使用 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.如果我可以编写一个适配器来帮助我在生成的枚举中添加值

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

最佳答案

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

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

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

关于java - 使用 JAXB marshal 添加/修改 XML 文件中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56452053/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com