0
我是新來的C#,我需要編寫一個應用程序來驗證一個Xml文件。 應用程序運行時沒有錯誤。但XML是無效 Here's代碼:ValidationEventHandler not calling
public class Program
{
/// <summary>
/// Bool für Valid false or true.
/// </summary>
private static bool isValid;
/// <summary>
/// Validiert eine Xml Datei gegen ein XmlSchema
/// </summary>
/// <param name="args">Args StringArray</param>
private static void Main(string[] args)
{
// Strings der Dateien:
const string xmlfile = @"C:\\temp\dataneu.xml";
const string xsdfile = @"C:\\temp\xsd\OlShopSchnittstelle.xsd";
// Reader settings öffnen, Schema hinzufügen + ValidationType setzen.
XmlReaderSettings settings = new XmlReaderSettings();
settings.Schemas.Add("http://tempuri.org/OLShopSchnittstelle.xsd", xsdfile);
settings.ValidationType = ValidationType.Schema;
// XmlDoc, settings zum neuen XmlReader hinzufügen.
XmlReader reader = XmlReader.Create(xmlfile, settings);
// Neues XmlDoc. mit Reader füllen.
XmlDocument doc = new XmlDocument();
doc.Load(reader);
// Neuer ValidationEventHandler mit settings
settings.ValidationEventHandler += new ValidationEventHandler(Settings_ValidationEventHandler);
// Is Valid auf true, wird bei Fehler auf false gesetzt(EventHandler).
isValid = true;
// Validierung
doc.Validate(Settings_ValidationEventHandler);
// Wenn EventHandler nicht ausgelöst wird bleibt isValid: true.
if (isValid == true)
{
Console.WriteLine("Valid Document");
}
else
{
Console.WriteLine("Invalid Document");
}
Console.ReadLine();
}
/// <summary>
/// Wird bei Fehler der Validierung ausgelöst, setzt isValid auf false.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private static void Settings_ValidationEventHandler(object sender, ValidationEventArgs e)
{
isValid = false;
Console.WriteLine("Validation Error: {0}", e.Message);
}
}
我在做什麼錯在這裏,我的事件是不是哪位?
非常感謝,現在it's工作。 –
我很高興爲您效勞保羅謝謝 –