Pergunta

Existe uma maneira de obter mais informações úteis sobre erro de validação? XmlSchemaException fornece o número da linha e posição do erro que faz pouco sentido para mim. documento XML depois de tudo não é sobre sua representação textual transitória. Eu gostaria de obter um erro enumerados (ou um código de erro) especificando que quando errado, nome do nó (ou um XPath) para localizar a origem do problema de modo que talvez eu possa tentar consertá-lo.

Editar: Eu estou falando sobre documentos XML válidos - só não válidos contra um esquema específico

Foi útil?

Solução

Você pode fazer isso, de alguma forma, através da criação de um XmlReader cuja XmlReaderSettings conter o esquema e, em seguida, usá-lo para ler o nó fluxo de entrada por nó. Você pode acompanhar o último nó ler e ter uma boa idéia bastante de onde você está no documento quando um erro de validação acontece.

Eu acho que se você tentar este exercício, você vai descobrir que há um monte de erros de validação (por exemplo elemento necessários faltando), onde o conceito do nó de erro não fazem muito sentido. Sim, o elemento pai é claramente o que está em erro nesse caso, mas o que realmente provocou o erro foi o leitor encontrar a tag final sem nunca ver o elemento necessário, razão pela qual a linha de erro e ponto de posição na tag final.

Outras dicas

Na minha experiência, você tiver sorte para obter um número de linha e posição de análise.

Você pode considerar a validação através de um DTD que podem às vezes dar erros um pouco mais interessantes, no entanto, em um projeto atualmente eu trabalho, nós validar usando XSLTs. A transformação verifica a sintaxe e reporta erros como outputted transformar o texto. Eu consideraria esse caminho se você quiser verificação de erros mais amigável. Para nós, uma saída vazia significa que não há erros, caso contrário, obter algum detalhe legal a partir do processamento XSLT em que o erro foi e onde.

pessoalmente eu não tenho certeza de como obter um erro mais detalhada, typcially f você abrir o documento e ir para o local mencionado você pode facilmente encontrar o erro.

Se o código não é capaz de analisar o arquivo como XML válido, é muito difícil para ele dar um XPath ou outro detalhe XML nomeado.

Parece que esta não é uma tarefa fácil. A resposta de Robert Rossney mais se aproxima de programmaticaly resolver o meu problema, então eu vou aceitar que por agora. Eu vou continuar usando a solução xsl. Qualquer um encontrar uma maneira melhor de erros de validação determinação pode responder a esta discussão.

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