Frage an xml-validation, jaxb2, jaxb – Überprüfen Sie mit jaxb erstellte XML-Dateien anhand einer xsd-Datei

9

Ich habe eine XML-Datei mit Jaxb erstellt. Ich muss es anhand eines xsd-Dokuments validieren. Ist es möglich, nur eine Validierung durchzuführen, ohne das Marshalling aufzuheben? Ich muss dann die Fehler in der XML-Datei ausdrucken.

Sie können Schema und ValidationEventHandler auf dem Marshaller selbst festlegen. Es wird beim Marshalling anhand des Schemas validiert. Sehendocs.oracle.com/javase/6/docs/api/javax/xml/bind/… Ritesh
Einer der Hauptvorteile der Generierung eines Bindungscodes aus xsd und der anschließenden Verwendung des Codes zum Erstellen einer Instanz-XML besteht in der Ausgabe einer gültigen und wohlgeformten XML. Ich bin mir nicht sicher, warum Sie es erneut validieren möchten? Aravind R. Yarram

Deine Antwort

1   die antwort
11

Sie können den in va gefundenen Validator von 1.5 verwenden. Hier ist die Referenzdoc

Abgesehen davon können Sie dom-basierte oder stream-basierte API verwenden, um Ihr XML-Dokument gegen eine xsd-Datei zu validieren. Wenn Sie die SAX-API für Ihre Aufgabe verwenden möchten, sehen Sie sich das folgende Beispiel an:

try {
    String schemaLang = "http://www.w3.org/2001/XMLSchema";

    SchemaFactory factory = SchemaFactory.newInstance(schemaLang);

    Schema schema = factory.newSchema(new StreamSource("sample.xsd"));
    Validator validator = schema.newValidator();

    validator.validate(new StreamSource("test.xml"));

} catch (SAXException e) {
    System.out.println(" sax exception :" + e.getMessage());
} catch (Exception ex) {
    System.out.println("excep :" + ex.getMessage());
}

Andernfalls können Sie die DOM-, DOM4J- oder XOM-API verwenden. Für weitere Informationen können Sie sehenHier.

Es gibt eine verwandteAntworten auch im Stackoverflow.

Sie können auch vor dem Marshalling überprüfen: JAXBSource source = new JAXBSource (jaxbContext, objectBeingMarshalled); validator.validate (source); Ritesh
Es bedeutet, dass in Ihrem XML-Startbereich ein Leerzeichen vorhanden ist. Entfernen Sie Leerzeichen oder anderes am Anfang Ihres XML-Codes. Folgen Sie dem Link:gonithethinker.blogspot.com/2012/06/… @AutoMeta Forhad
Ich erhalte diese Ausnahme, Saxophon-Ausnahme: Das Verarbeitungsanweisungsziel, das mit "[xX] [mM] [IL]" übereinstimmt, ist nicht zulässig. AutoMEta

Verwandte Fragen