valor validar obtener nomenclatura herencia estados enum con comportamiento avanzado java dynamic jaxb eclipselink moxy

validar - obtener valor de un enum java



EclipseLink dinĂ¡mico MOXy accediendo a valores enum (1)

Estoy usando el XSD que figura a continuación y un XML correspondiente. Todo funciona bien con MOXy dinámico, pero no tengo idea de cómo acceder al tipo de enumeración dentro de Java. ¿Alguna sugerencia? Gracias por la ayuda.

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


Para usar un valor enum para una operación set (), primero necesita buscar la constante enum usando DynamicJAXBContext.getEnumConstant (), y luego usar eso para el conjunto. Por ejemplo:

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

Para obtener el valor, está llamando al código correcto, pero el valor que se devuelve no será una cadena, sino el valor enum real del objeto asociado con esa cadena. Deberías usar:

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

Espero que esto ayude,

Almiar