1

JAXBでXSDを使用して列挙値を検証するにはどうすればよいですか? 間違った値が設定されている場合にエラーをスローしたいが、欠落している値は問題ありません ( minOccurs = "0")。

4

2 に答える 2

1

これは、XML スキーマの型制限と列挙を使用して実行できます。いくつかのドキュメントについては、このリンクを参照してください

性別を表す型の例を見てみましょう。

<xsd:simpleType name="gender">
  <xsd:restriction base="xs:string">
  <xsd:enumeration value="M"/>
  <xsd:enumeration value="F"/>
</xsd:restriction>

JAXB は次のような列挙型を生成します。

@XmlType(name = "gender")
@XmlEnum
public enum Gender {

  M,
  F;

  public String value() {
    return name();
  }

  public static Gender fromValue(String v) {
    return valueOf(v);
  }

}

それに応じて入力を検証します。このようなタイプの要素で使用するminOccurs="0"と、必要なものが得られるはずです。

于 2012-06-30T07:52:35.380 に答える
0

ソリューション:

    SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
    Schema schema = sf.newSchema(this.getClass().getClassLoader().getResource("XSD FILE UNDER WEB-INF/classes"));
    unmarshaller.setSchema(schema);
于 2012-06-30T08:51:51.413 に答える