Frage

Ich habe mich nur gefragt, ob jemand meinen XML-Validierungscode ein einmal über geben könnte, um zu sehen, ob ich es richtig mache. Hier ist der Teil des Codes, der mir die Mühe schenkt ...

SAXParserFactory factory = SAXParserFactory.newInstance();

SchemaFactory schemaFactory = SchemaFactory
    .newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);

// *** CODE FAILS ON THE BELOW LINE **/
factory.setSchema(schemaFactory
    .newSchema(new Source[] { new StreamSource(schemaStream) }));

SAXParser parser = factory.newSAXParser();

SAXReader reader = new SAXReader(parser.getXMLReader());
reader.setValidation(false);
reader.setErrorHandler(new ResultProducingErrorHandler());
reader.read(content);

Jedes Mal, wenn ich den obigen Code ausführen, bekomme ich einen Fehler entlang der Linien von:

src-resolve: Cannot resolve the name 'ns:myStructure' to a(n) 'type definition' component.

Die Elemente in den genannten Fehlermeldungen sind alle diejenigen, die in das Schema über Anrufe eingeführt werden, um . Das Schema scheint zu bestätigen OK über den W3C XML Schema Validator .

Muß ich individuell jedes dieses Schema umfasse oder Java intelligent genug, um zu gehen und holt diese zusätzliche Schema auch? Ich habe versucht, sie in dem Array übergibt an das newSchema Gespräch hinzugefügt wird, aber das hat keinen Unterschied machen.

Ich glaube nicht, dass ich den Link zu dem Schema geben kann, so dass ich wirklich nur auf der Suche nach einem Ja oder Nein in Bezug auf, wenn mein Code zumindest akzeptabel aussieht.

War es hilfreich?

Lösung

Stellen Sie sicher, dass die xs: import-Anweisungen Pfade zeigen, die aus dem aktuellen Verzeichnis der Anwendung erreichbar sind. Das aktuelle Verzeichnis kann nicht sein, was Sie denken, es ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top