Pregunta

Me preguntaba si alguien podría dar mi código de validación XML una vez más para ver si lo estoy haciendo bien. Aquí está la parte del código que me está causando problemas ...

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

Cada vez que ejecuto el código anterior, aparece un error en la línea de:

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

Los elementos mencionados en los mensajes de error son todos los que se importan al esquema mediante llamadas a < xs: import / > ;. El esquema parece validar OK a través del Validador de esquema XML W3C .

¿Tengo que incluir cada uno de estos esquemas individualmente o es Java lo suficientemente inteligente como para salir y buscar estos esquemas adicionales también? Intenté agregarlos en la matriz pasada a la nueva llamada de Esquema, pero eso no hizo ninguna diferencia.

No creo que pueda dar el enlace al esquema, por lo que realmente estoy buscando un sí o un no con respecto a si mi código parece al menos aceptable.

¿Fue útil?

Solución

Asegúrese de que las declaraciones xs: import apunten a rutas a las que se pueda acceder desde el directorio actual de su aplicación. El directorio actual puede no ser lo que crees que es.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top