Вопрос о Jaxb 2.x SchemaGen - PullRequest
       4

Вопрос о Jaxb 2.x SchemaGen

1 голос
/ 04 декабря 2010

Я пытаюсь сгенерировать схему, используя jaxb из моих существующих классов POJO, и до сих пор она работала нормально. Теперь у меня есть требование, где мне нужно объявить тип атрибута - это мой XSD, но значение атрибута должно быть одним из предопределенных значений.ниже приведен снимок кода из моего класса

private String destinationID;
private String contactNo;
private String type;
@XmlAttribute
private String name;

Мое требование состоит в том, чтобы имя содержало любое из предопределенных значений, схему, подобную этой

<xsd:attribute name="type"
        type="simpleType.Generic.ProductReferenceType" use="required" />
<xsd:simpleType name="simpleType.Generic.ProductReferenceType">
    <xsd:restriction base="xsd:string">
        <xsd:enumeration value="OFFER" />
        <xsd:enumeration value="SELLER" />
        <xsd:enumeration value="DEFINITION" />
    </xsd:restriction>
</xsd:simpleType>

Я не могу найтичто мне нужно сделать в своем классе, чтобы добиться этого

заранее спасибо

1 Ответ

2 голосов
/ 09 января 2011

Вы можете определить перечисление следующим образом:

@XmlType(name="simpleType.Generic.ProductReferenceType")
public enum ProductReferenceType { 
    OFFER,
    SELLER,
    DEFINITION
}

, а затем просто использовать его в своем классе:

@XmlAttribute
public ProductReferenceType type;

Это создаст XSD следующим образом:

  <xs:simpleType name="simpleType.Generic.ProductReferenceType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="OFFER"/>
      <xs:enumeration value="SELLER"/>
      <xs:enumeration value="DEFINITION"/>
    </xs:restriction>
  </xs:simpleType>

и

    <xs:attribute name="type" type="simpleType.Generic.ProductReferenceType"/>

Удачи в вашем проекте!

...