自動生成されたクラスに@XmlRootElementアノテーションがないため、型を要素としてマーシャリングできません。質問する

自動生成されたクラスに@XmlRootElementアノテーションがないため、型を要素としてマーシャリングできません。質問する

自動生成された JAXB クラスのフィールドを検証するための正規表現を指定したスキーマに対してクラス オブジェクトを検証する必要があります。クラス オブジェクトを検証しようとすると、次のエラーが発生します。

@XmlRootElement アノテーションがないため、型 "xyz" を要素としてマーシャリングできません。

自動生成されたクラス オブジェクトを検証するために使用するコードは次のとおりです。

jc = JAXBContext.newInstance(obj.getClass());
source = new JAXBSource(jc, obj);
Schema schema = schemaInjector.getSchema();
Validator validator = schema.newValidator();
validator.validate(source);

これを解決する他の方法はありますか?

ベストアンサー1

クラスにアノテーションがない場合は@XmlRootElement、 のインスタンスにラップできますJAXBElement。 XML スキーマからクラスを生成した場合、生成されたObjectFactoryには便利なメソッドが含まれている可能性があります。

このユースケースについては、私のブログ:

おすすめ記事