Hallo,
ich schlage mich mit der Validierung von XML Dateien durch XSD Schemas herum und hatte eigentlich unter msdn.microsoft.com/de-de/library/ms162371(v=vs.110).aspx eine übersichtliche Möglichkeit gefunden wie eine xml Datei mit einem xsd shema validiert werden kann.
Mein Code sieht so aus:
Mein Problem ist, das scheinbar die Validierung schon mit dem Laden der XML Datei in der Zeile 13 (xmldoc.Load(reader);) stattfindet.
Wenn die XML Datei zum XSD Schema passt, läuft der Code so durch.
Wenn ich in der XML Datei eine Änderung vornehme (z.B. Knoten umbenenne) erhalte ich bereits beim laden die Meldung:
"Ein Ausnahmefehler des Typs "System.Xml.Schema.XmlSchemaValidationException" ist in System.Xml.dll aufgetreten.
Zusätzliche Informationen: Das Element 'Machine' in Namespace 'urn:skogforsk:stanford2010' hat ein ungültiges untergeordnetes Element 'MachineOwner2' in Namespace 'urn:skogforsk:stanford2010'. Erwartet wurde die Liste der möglichen Elemente: 'RegistrationNumber, MachineOwner' in Namespace 'urn:skogforsk:stanford2010'."
Laut Beispiel sollte die Validierung erst durch den Befehl xmldoc.validate erfolgen.
Was bringt mir jetzt die Validierung wenn bereits beim laden diese erfoglt und einen Programmabruch hervorruft?
Was mache ich hier falsch?
Vielen Dank für jede Hilfe im voraus!
Gruß
Horten
ich schlage mich mit der Validierung von XML Dateien durch XSD Schemas herum und hatte eigentlich unter msdn.microsoft.com/de-de/library/ms162371(v=vs.110).aspx eine übersichtliche Möglichkeit gefunden wie eine xml Datei mit einem xsd shema validiert werden kann.
Mein Code sieht so aus:
C#-Quellcode
- void Test()
- {
- // Set the validation settings.
- XmlReaderSettings settings = new XmlReaderSettings();
- settings.Schemas.Add("urn:skogforsk:stanford2010", "HarvestedProduction_V2p1.xsd");
- settings.ValidationType = ValidationType.Schema;
- XmlReader reader = XmlReader.Create(@"..\..\Harvester2.1.xml", settings);
- //XML Document erzeugen
- XmlDocument xmldoc = new XmlDocument();
- xmldoc.Load(reader);
- ValidationEventHandler eventHandler = new ValidationEventHandler(ValidationEventHandler);
- //Validierung durchführen
- xmldoc.Validate(eventHandler);
- }
- static void ValidationEventHandler(object sender, ValidationEventArgs e)
- {
- switch (e.Severity)
- {
- case XmlSeverityType.Error:
- Console.WriteLine("Error: {0}", e.Message);
- break;
- case XmlSeverityType.Warning:
- Console.WriteLine("Warning {0}", e.Message);
- break;
- }
- }
Mein Problem ist, das scheinbar die Validierung schon mit dem Laden der XML Datei in der Zeile 13 (xmldoc.Load(reader);) stattfindet.
Wenn die XML Datei zum XSD Schema passt, läuft der Code so durch.
Wenn ich in der XML Datei eine Änderung vornehme (z.B. Knoten umbenenne) erhalte ich bereits beim laden die Meldung:
"Ein Ausnahmefehler des Typs "System.Xml.Schema.XmlSchemaValidationException" ist in System.Xml.dll aufgetreten.
Zusätzliche Informationen: Das Element 'Machine' in Namespace 'urn:skogforsk:stanford2010' hat ein ungültiges untergeordnetes Element 'MachineOwner2' in Namespace 'urn:skogforsk:stanford2010'. Erwartet wurde die Liste der möglichen Elemente: 'RegistrationNumber, MachineOwner' in Namespace 'urn:skogforsk:stanford2010'."
Laut Beispiel sollte die Validierung erst durch den Befehl xmldoc.validate erfolgen.
Was bringt mir jetzt die Validierung wenn bereits beim laden diese erfoglt und einen Programmabruch hervorruft?
Was mache ich hier falsch?
Vielen Dank für jede Hilfe im voraus!
Gruß
Horten