El siguiente código me ayuda a validar un archivo XML con un esquema XSD.Validación de Xml con el esquema XSD
XmlReaderSettings settings = new XmlReaderSettings();
settings.Schemas.Add(null, xsdFilePath);
settings.ValidationType = ValidationType.Schema;
settings.ValidationEventHandler += new System.Xml.Schema.ValidationEventHandler(settings_ValidationEventHandler);
XmlDocument document = new XmlDocument();
document.Load(xmlFilePath);
XmlReader rdr = XmlReader.Create(new StringReader(document.InnerXml), settings);
while (rdr.Read())
{
}
isValid = true;
El ValidationEventHandler también me dice lo que los errores son, pero no me dice sobre 'dónde' o 'en la que la línea' que se encuentran. ¿Hay alguna manera de obtener el número de línea donde no se valida el XML?
+1 Totalmente perdido e.Exception.LineNumber y e.Exception.LinePosition. – Elroy
¿Por qué estás poniendo esto en un XmlDocument al principio? No parece hacer nada. –
@JeremyHolovacs cierto, fue solo una copia de una de las respuestas del foro de 2007 (http://www.devnewsgroups.net/dotnetframework/t43762-catching-line-numbers-with-xmldocument-validate.aspx), y el siguiente comentario mencionó: "Funciona cuando elimino el' XmlDocument' y reemplazo 'XmlNodeReader' con ' StringReader' " – VonC