2011-03-03 9 views
3

下記のXSDと対応するXMLを使用しています。すべてはdynamic MOXyでうまく動作しますが、java内でenum型にアクセスする方法はわかりません。 提案がありますか? ありがとうございます。EclipseLinkダイナミックMOXyのenum値へのアクセス

<?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"); 

答えて

1

セット()操作のための列挙型の値を使用するには、まずDynamicJAXBContext.getEnumConstant()を使用して、列挙型の定数を検索して、セットのためにそれを使用する必要があります。たとえば:

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

値を取得するには、正しいコードを呼び出しているが、戻ってくる値は、その文字列に関連付けられた文字列、それは意志実際の列挙値オブジェクトではありません。あなたは使用する必要があります。

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

・ホープ、このことができます、

リック

関連する問題