Pregunta

¿Hay alguna forma de obtener información más útil sobre el error de validación? La excepción XmlSchemaException proporciona el número de línea y la posición del error, lo que tiene poco sentido para mí. Documento Xml después de todo no se trata de su representación textual transitoria. Me gustaría obtener un error enumerado (o un código de error) que especifique qué es incorrecto, el nombre de nodo (o una ruta x) para localizar el origen del problema, de modo que tal vez pueda intentar solucionarlo.

Editar: estoy hablando de documentos xml válidos, ¡simplemente no es válido contra un esquema en particular!

¿Fue útil?

Solución

Puede lograr esto, más o menos, configurando un XmlReader cuyo XmlReaderSettings contiene el esquema y luego lo usa para leer el nodo de la secuencia de entrada por nodo. Puede realizar un seguimiento del último nodo leído y tener una idea bastante clara de dónde se encuentra en el documento cuando se produce un error de validación.

Creo que si intentas este ejercicio, descubrirás que hay muchos errores de validación (por ejemplo, falta un elemento requerido) donde el concepto del nodo de error no tiene mucho sentido. Sí, el elemento principal es claramente el error en ese caso, pero lo que realmente provocó el error fue que el lector encontró la etiqueta final sin ver nunca el elemento requerido, por lo que la línea de error y el punto de posición en la etiqueta final.

Otros consejos

En mi experiencia, tienes la suerte de obtener un número de línea y una posición de análisis.

Puede considerar la validación a través de un DTD que puede a veces dar errores un poco más interesantes, sin embargo, en un proyecto en el que actualmente trabajo, validamos utilizando XSLT. La transformación comprueba la sintaxis e informa los errores como texto de transformación generado. Consideraría esa ruta si desea una verificación de errores más amigable. Para nosotros, una salida vacía significa que no hay errores, de lo contrario, obtendremos algunos detalles del procesamiento de XSLT sobre qué fue el error y dónde.

personalmente, no estoy seguro de cómo obtener un error más detallado, por lo general, si abre el documento y va a la ubicación mencionada, puede encontrar el error fácilmente.

Si el código no puede analizar el archivo como XML válido, es bastante difícil que proporcione un XPATH u otro detalle XML denominado.

Parece que esta no es una tarea fácil. La respuesta de Robert Rossney se acerca más a la solución programática de mi problema, así que lo aceptaré por ahora. Seguiré usando la solución xsl. Cualquier persona que encuentre una mejor manera de resolver los errores de validación puede responder a este hilo.

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