Le code suivant m'aide à valider un fichier XML avec un schéma XSD.Validation Xml à l'aide du schéma 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;
Le ValidationEventHandler me dit aussi ce que les erreurs sont, mais ne me dit pas « où » ou « sur quelle ligne » ils se trouvent. Y at-il un moyen d'obtenir le numéro de ligne où le XML ne parvient pas à être validé?
+1 Complètement manqué e.Exception.LineNumber et e.Exception.LinePosition. – Elroy
Pourquoi mettez-vous ceci dans un XmlDocument au début? Cela ne semble rien faire. –
@JeremyHolovacs vrai, c'était juste une copie de l'une des réponses du forum 2007 (http://www.devnewsgroups.net/dotnetframework/t43762-catching-line-numbers-with-xmldocument-validate.aspx), et le commentaire suivant mentionné: "Cela fonctionne quand je supprime le' XmlDocument' et remplace 'XmlNodeReader' avec ' StringReader' " – VonC