Pergunta

Meu liderança mais forte é que o código que lida com os XMLs de entrada está realmente recebendo um arquivo inválido / incompleta, portanto, não a análise DOM. Alguma sugestão?

Foi útil?

Solução

arquivo incompleto é definitivamente o lugar para começar a procurar. Eu imprimir o arquivo logo antes do ponto em que analisá-lo para ver o que está sendo enviado para o analisador. Se é incompleta será óbvio. Se for inválido, você terá um pouco de pesquisa para fazer.

Outras dicas

Meu primeiro palpite seria que o código-usando DOM está tratando elementos que são marcados como opcional na DTD como obrigatório.

Editado para adicionar: O que quero dizer é que se você validar contra um DTD, você não pode esperar algo como o seguinte (exemplo usando dom4j) para retornar nada, mas null.

doc.selectSingleNode("//some/element/in/a/structure");

O mesmo é certamente verdade se você estiver elemento de encordoamento de navegação convoca, ou geralmente não verificar valores de retorno antes de usá-los.

Você deve ter um apontador rastreamento de pilha para onde você NPE é lançada. Isso deve diminuir o número de variáveis ??que podem ser nulos. Ao invés de obter o depurador ou fora printf, sugiro a adição de controlos adequados e lançar uma exceção em que, logo que o erro pode ser detectado. É um bom hábito de entrar para evitar problemas misteriosos mais tarde.

Idealmente, você deve estar executando o aplicativo java dentro de um depurador, assim quando uma exceção não capturada é jogado você pode examinar a pilha de chamadas, variáveis, etc e ver exatamente qual linha causou o acidente e, talvez, que os dados é nulo que se acostumou.

Se você não pode usar um depurador por qualquer motivo, em seguida, compilar o aplicativo com suporte a depuração, e adicionar um manipulador de exceção para este erro particular, e imprimir o rastreamento de pilha. Novamente, isso vai mostrar exatamente o que linha em que arquivo causou o acidente.

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