XMLを非マーシャリングおよびマーシャリングしてJavaオブジェクトに、またはその逆を行っているため、XML
およびJAXB
を使用しています。今、XMLを検証して私たちのスキーマ(test.xsd)。XMLで必要なフィールドが欠落している場合、スキーマtest.xsdに対してXMLを検証した後、どのフィールドが欠落しているかを知りたいと思います。
public void unmarshal(final InputStream is) {
final XMLInputFactory factory = XMLInputFactory.newInstance();
final XMLStreamReader reader = factory.createXMLStreamReader(is);
Object req = unmarshaller.unmarshal(reader);
// how would I validate here?
}
XMLをtest.xsdスキーマに対して検証するにはどうすればよいですか。私のtest.xsdスキーマパスは-
C:\ workspace\one\two\three\src\main\Java\com\package\serv\ap\versionOne\test.xsd
更新:test.xsdを次のように読み込んでいます
Schema schema = factorySchema.newSchema(new File("C:\\workspace\\one\\two\\three\\src\\main\\Java\\com\\package\\serv\\ap\\versionOne\\test.xsd"));
非整列化を行う前に、Unmarshaller
に javax.xml.validation.Schema
のインスタンスを設定する必要があります。 ValidationEventHandler
にUnmarshaller
の実装を指定して、非整列化プロセス中に発生する問題をキャッチできます。
詳細情報
この使用例については、ブログで詳しく説明しています。