Pergunta

Eu só estava me perguntando se alguém poderia dar o meu código de validação XML uma vez mais para ver se estou fazendo certo. Aqui está a parte do código que está me dando o 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);

Sempre que eu executar o código acima, eu recebo um erro ao longo das linhas de:

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

Os elementos mencionados nas mensagens de erro são todos aqueles que são importados para o esquema por meio de chamadas de . O esquema parece validar OK através da W3C XML Schema Validator .

Eu tenho que incluem cada um destes esquemas é individual ou é suficiente inteligente Java para sair e buscar estes esquema adicional é demasiado? Eu tentei adicionar-los na matriz passada para a chamada newSchema mas isso não faz qualquer diferença.

Eu não acho que eu posso dar o link para o esquema, então eu realmente estou apenas procurando um sim ou não sobre se os meus olhares de código, pelo menos aceitável.

Foi útil?

Solução

Certifique-se de que as xs: instruções de importação apontam para caminhos que são acessíveis a partir do diretório atual de sua aplicação. O diretório atual pode não ser o que você pensa que é.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top