【问题标题】:EclipseLink dynamic MOXy accessing enum valuesEclipseLink 动态 MOXy 访问枚举值
【发布时间】:2011-07-08 01:43:35
【问题描述】:

我正在使用下面列出的 XSD 和相应的 XML。 dynamic MOXy 一切正常,但我不知道如何在 java 中访问枚举类型。 有什么建议? 感谢您的帮助。

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema ...>
     <xs:element name="person">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="first-name" type="xs:string"/>
                <xs:element name="last-name" type="xs:string"/>
                <xs:element name="quadrant" type="myns:compass-direction"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:simpleType name="compass-direction">
        <xs:restriction base="xs:string">
            <xs:enumeration value="NORTH"/>
            <xs:enumeration value="SOUTH"/>
            <xs:enumeration value="EAST"/>
            <xs:enumeration value="WEST"/>
        </xs:restriction> 
    </xs:simpleType>

</xs:schema>

//JAVA code
DynamicEntity person = (DynamicEntity) dynamicJAXBContext.createUnmarshaller().unmarshal(instanceDoc);
String firstName = person.get("firstName");
String lastName = person.get("lastName");
//until here it works well

//but now: how to get and set the value of the "quadrant"?
// following lines do not work
String quadrant=person.get("quadrant);
person.set("quadrant","NORTH");

【问题讨论】:

    标签: java dynamic jaxb eclipselink moxy


    【解决方案1】:

    要将枚举值用于 set() 操作,您需要首先使用 DynamicJAXBContext.getEnumConstant() 查找枚举常量,然后将其用于集合。例如:

    Object NORTH = ctx.getEnumConstant("your.package.CompassDirection", "NORTH");
    person.set("quadrant", NORTH);
    

    要获取值,您调用的是正确的代码,但返回的值不会是字符串,而是与该字符串关联的实际枚举值对象。你应该使用:

    Object quadrant = person.get("quadrant");
    

    希望这会有所帮助,

    瑞克

    【讨论】:

      【解决方案2】:

      如果你有值,你可以使用类来获取所有可能的值。

      protected static Enum[] getValues(Enum enumValue) {
              return enumValue.getClass().getEnumConstants();
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-01-29
        • 1970-01-01
        • 1970-01-01
        • 2017-06-26
        • 1970-01-01
        • 2018-10-29
        • 2014-11-22
        • 1970-01-01
        相关资源
        最近更新 更多