Domanda

Mi stavo solo chiedendo se qualcuno potesse dare una volta il mio codice di convalida XML per vedere se lo sto facendo bene. Ecco la parte di codice che mi sta dando il problema ...

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);

Ogni volta che eseguo il codice sopra, viene visualizzato un errore simile a:

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

Gli elementi menzionati nei messaggi di errore sono tutti quelli che vengono importati nello schema tramite chiamate a < xs: import / > ;. Lo schema sembra convalidare OK tramite W3C XML Schema Validator .

Devo includere ciascuno di questi schemi singolarmente o Java è abbastanza intelligente da spegnersi e recuperare anche questi schemi extra? Ho provato ad aggiungerli nell'array passato alla chiamata newSchema ma questo non ha fatto alcuna differenza.

Non credo di poter dare il link allo schema, quindi sto davvero cercando un sì o un no riguardo se il mio codice sembra almeno accettabile.

È stato utile?

Soluzione

Assicurarsi che le istruzioni xs: import facciano riferimento a percorsi raggiungibili dalla directory corrente dell'applicazione. La directory corrente potrebbe non essere quella che pensi sia.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top