Il seguente codice consente di convalidare un file XML con uno schema XSD.Convalida Xml utilizzando lo schema 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;
Il ValidationEventHandler mi dice anche ciò che gli errori sono, ma non mi dice il 'dove' o 'su quale linea' si trovano. C'è un modo per ottenere il numero di riga in cui l'XML non riesce a essere convalidato?
+1 Completamente mancato e.Exception.LineNumber e e.Exception.LinePosition. – Elroy
Perché stai mettendo questo in un XmlDocument all'inizio? Non sembra fare nulla. –
@JeremyHolovacs true, era solo una copia di una delle risposte del forum del 2007 (http://www.devnewsgroups.net/dotnetframework/t43762-catching-line-numbers-with-xmldocument-validate.aspx), e il seguente commento ha menzionato: "Funziona quando non uso' XmlDocument' e sostituisco 'XmlNodeReader' con ' StringReader' " – VonC