首页 > 解决方案 > java jaxb:将 xml 转换为 java 枚举列表

问题描述

我正在使用 java 中的一个项目,其中通过 xjc 将 xml 输入读取到生成的类中。所以xsd模式被转换成java类型。

一切都很好,通常我没有问题,但我似乎无法正确转换:我想将枚举的 xml 列表转换为枚举的 java 列表。

这是我的 xsd 部分:

   <xs:attribute name="myTypes" use="required">
        <xs:simpleType >
            <xs:list itemType="output.myType"/>
        </xs:simpleType>
    </xs:attribute>

    <xs:simpleType name="output.myType">
        <xs:annotation>
            <xs:appinfo>
                <jaxb:javaType
                    name="packagename.MyEnumType"
                    parseMethod="...TypeConverter.unmarshalOutputMyType"
                    printMethod="...TypeConverter.marshalOutputMyType"
                />
            </xs:appinfo>
        </xs:annotation>
        <xs:restriction base="xs:string">
            <xs:enumeration value="option1"/>
            <xs:enumeration value="option2"/>
            <xs:enumeration value="option3"/>
        </xs:restriction>
    </xs:simpleType>

在进行 xjc 生成时,我不断在生成的 java 类中得到它:

public List<String> getMyTypes() 

虽然我期待这个:

public List<MyEnumType> getMyTypes() 

如何让 jaxb/xjc 使用 List 来生成列表,而不是仅仅将类型解析为字符串列表?如果我只是将 output.myType 直接用作属性的 simpleType,则转换效果很好,但是当我尝试将属性放入这些项目的列表时它不起作用。

标签: javaxmlxsdjaxbxjc

解决方案


推荐阅读