私はc#を初めて使用し、Xmlファイルを検証するためのアプリを作成する必要があります。アプリケーションはエラーなしで実行されます。しかし、Xmlは有効ではありません。コードは次のとおりです。
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);
}
}
私のイベントが呼び出していないのに、ここで何が間違っているのですか?