Estoy intentando validar un fragmento Xml usando un esquema Xml con el método de extensión XDocument.Validate. Siempre que un fragmento de XML no válido se utiliza el fuego ValidationEventHandler correctamente, sin embargo tanto las propiedades lineNumber y LinePosition del XmlSchemaValidationException son 0.XmlSchemaValidationException.LineNumber y LinePosition son 0 al validar un esquema Xml con XDocument.Validate
private bool Validate(XDocument doc)
{
bool isValid = true;
List<string> validationErrors = new List<string>();
XmlSchemaSet schemas = new XmlSchemaSet();
schemas.Add(null, "MyCustomSchema.xsd");
doc.Validate(schemas, (sender, args) =>
{
validationErrors.Add(String.Format("{0}: {1} [Ln {2} Col {3}]",
args.Severity,
args.Exception.Message,
args.Exception.LineNumber,
args.Exception.LinePosition));
isValid = false;
}, false);
return isValid;
}
Mi objetivo en el ejemplo anterior es utilizar validationErrors para informar a un usuario de por qué el validación fallida. Sin embargo, cuando se usa este método, LineNumber y LinePosition son 0.
El fragmento parece bastante simple y parece funcionar como se espera en términos de validación contra fragmentos Xml válidos e inválidos.
¡Gracias de antemano!
Por lo que puedo ver, el XmlSchemaValidator que se instancia solo usa una DummyPostion interna y no veo una opción para obtener una mejor implementación inyectada. – rene