/ / Validieren von XML mit mehreren XSDs in Java - Java, XML, Validierung, XSD, Sax

Validieren von XML mit mehreren XSDs in Java - Java, XML, Validierung, XSD, Sax

Ich möchte eine XML-Datei mit Java syntaktisch analysieren und im selben Schritt gegen ein XSD-Schema validieren. Eine XML-Datei kann Inhalt mehrerer Schemas enthalten, wie folgt:

<outer xmlns="my.outer.namespace" xmlns:x="my.third.namespace">
<foo>hello</foo>
<inner xmlns="my.inner.namespace">
<bar x:id="bar">world</bar>
</inner>
</outer>

Bei einem Namespace kann die entsprechende xsd-Datei bereitgestellt werden, aber die verwendeten Namespaces sind vor dem Parsen unbekannt. Wenn ein Schema Standardwerte für Attribute definiert, möchte ich das auch irgendwie wissen.

Ich konnte eine Datei validieren, wenn die Schemas sindbekannt, konnte ich eine Datei ohne Validierung analysieren und implementierte einen LSResourceResolver. Allerdings kann ich nicht alles zusammen arbeiten. Wie muss ich meinen (SAX) Parser einrichten?

Antworten:

5 für die Antwort № 1

Wer die Java XML API entwickelt hat, muss Drogen genommen haben ...

public void parseAndValidate(File xmlFile, ContentHandler handler) {
SchemaFactory schemaFactory =
SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
schemaFactory.setResourceResolver(new MySchemaResolver());
Schema schema = schemaFactory.newSchema();

Validator v = schema.newValidator();
v.setResourceResolver(schemaFactory.getResourceResolver());

InputSource is = new InputSource(new FileInputStream(xmlFile));
v.validate(new SAXSource(is), new SAXResult(handler));
}