Ich habe eine XML-Datei mit Jaxb erstellt. Ich muss es gegen ein xsd-Dokument validieren. Ist es möglich, einfach eine Validierung durchzuführen, ohne das Programm zu munmarsieren? Ich muss dann die Fehler in der XML-Datei drucken.Validate XML erstellt mit Jaxb gegen eine Xsd-Datei
Antwort
Ja, Sie können Validator in Java von 1.5 gefunden. Hier ist die Referenz doc
Abgesehen davon können Sie Dom-basierte oder Stream-basierte API verwenden, um Ihr XML-Dokument gegen Xsd-Datei zu überprüfen. Wenn Sie SAX API für Ihre Aufgabe verwenden, dann hören ist das Beispiel:
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());
}
Ansonsten können Sie verwenden, DOM, DOM4J oder XOM-API. Für weitere Referenz sehen Sie here.
Es gibt eine verwandte answer in stackoverflow auch.
Sie können auch vor dem Marshalling validieren: JAXBSource-Quelle = neue JAXBSource (jaxbContext, objectBeingMarshalled); \t \t validator.validate (Quelle); – Ritesh
Ich bekomme diese Exception Sax Ausnahme: Die Verarbeitung Anweisung Ziel Übereinstimmung "[xX] [mM] [lL]" ist nicht erlaubt. – AutoMEta
bedeutet dies, dass in Ihrem XML-Startplatz etwas Platz vorhanden ist, Leerzeichen oder etwas anderes zu Beginn Ihrer XML-Datei entfernt wird. Folgen Sie dem Link: http: //gonithethinker.blogspot.com/2012/06/processing-instruction-target-matching .html @AutoMeta – Forhad
- 1. Validate XML gegen XSD-Software
- 2. Validate XML gegen XSD in reinen ABAP
- 3. Validate eine XML-Datei gegen Multiple-Schema-Definitionen
- 4. Validate XML LibXML
- 5. Validate XML gegen XSD in einer einzigen Methode
- 6. jQuery validate: Nummer gegen Ziffern
- 7. JAXB erzeugt eine XML-Verarbeitungsanweisung
- 8. Abstellungs eine XML-Zeichenfolge mit jaxb
- 9. xml: base in JAXB
- 10. JAXB XML-Ausgabeformat Fragen
- 11. Parse Unbekannte Xml mit JAXB
- 12. XML-Parsing-Problem mit Jaxb
- 13. Unmarshalle XML-Datei mit JAXB
- 14. Neuling Validate XML XSD
- 15. Validate XML gegen XSD 1.1 Schema/XSD (mit Saxon-B/Saxon 9.1.0.8) auf der Kommandozeile (Linux)
- 16. JAXB und Namespace-less XML
- 17. JAXB Unmarshall Erstellt ein leeres Objekt
- 18. Parsen von Antwort-XML mit JAXB
- 19. Unmarshalling XML zu bestehenden Objekt mit JAXB
- 20. Codierung für XML mit Jaxb-Eigenschaften festlegen
- 21. Qt C++ XML, Validierung gegen eine DTD?
- 22. Dekodierung von Attributen in XML mit JAXB
- 23. Mule - Objekt zu XML mit JAXB
- 24. Wie XML mit JAXB zu analysieren?
- 25. XML-Element mit Attribut hat ":" in JAXB
- 26. konvertieren xml zu Java-Objekt mit JAXB
- 27. Format XML mit JAXB während unmarshal
- 28. XML-Validierung gegen XSD
- 29. Benötigen Sie Jaxb zu XML zurück xml mit voller Paketname
- 30. Xml Parse Problem in JAXB
Einer der Hauptvorteile des Generierens eines Bindungscodes aus xsd und des anschließenden Verwendens des Codes zum Erstellen eines Instanz-XML ist die Ausgabe eines gültigen und wohlgeformten XML. Ich bin mir nicht sicher, warum Sie es erneut validieren möchten? –
Sie können Schema und ValidationEventHandler für den Marshaller selbst festlegen. Es wird beim Marshalling gegen das Schema validiert. Siehe http://docs.oracle.com/javase/6/docs/api/javax/xml/bind/Marshaller.html#setSchema(javax.xml.validation.Schema) – Ritesh