C# - Schemainformationen für das Element konnten nicht gefunden werden?

2 Antworten

Spontan hab ich keine Idee, zumindest nicht aus dem Kopf, ich müsste selber probieren, um die Lösung zu finden.

Wenn ich jetzt den eigentlich Fehler lösen müsste, würde ich als erstes ausprobieren, was passiert, wenn ich bei der Angabe für die Schema-Datei den Namespace weg lasse.

Aber warum willst Du überhaupt mit XSD validieren?

Deserialisiere doch die Datei und prüfe danach das Ergebnis. Der XmlSerializer tut das zumindest teilweise schon für dich, er prüft, ob er den Properties, für die er einen Wert, Diesen auch zuweisen kann.

Du musst also prüfen, ob die Properties einen Wert haben und ob er funktioniert. Auf diese Weise hast Du auch weit mehr Möglichkeiten als mit XSD.

Woher ich das weiß:Berufserfahrung – C#.NET Senior Softwareentwickler

SuM2AdH 
Beitragsersteller
 09.01.2018, 08:09

Danke für deine Antwort. :)

Was mir zuerst einmal auffällt: Du benutzt den using-Block falsch. Erst erstellst du das Objekt außerhalb und dann noch nach dem Block für die Schleife. Der using-Block ist aber dazu da, ein Objekt nur in dessen Kontext zu halten. Mit Ende des Blocks wird das Element eigentlich explizit zerstört (es ruft seine Methode Dispose auf).

Also entweder du lässt den Block weg oder du schreibst es so:

using (var xmlFileReader = XmlReader.Create(fileName, xmlReaderSettings)
{
  // ...

  while (xmlFileReader.Read())
  {
  }
}

Bei dem xmlReaderSettingsValidationEventHandler kannst du mit einem logischen OR übrigens einige Zeilen Code sparen und die Methodennamen solltest du stets mit einem Großbuchstaben beginnen, um stringent zu bleiben.

Zu deinem Problem:

Wieso nutzt du denn die URL zu W3Schools als Target-Namespace bzw. was wäre denn, wenn du stattdessen das Argument null übergeben würdest? Vergleiche außerdem nochmal mit dem Beispiel aus der Dokumentation: https://msdn.microsoft.com/en-us/library/as3tta56(v=vs.100).aspx


SuM2AdH 
Beitragsersteller
 09.01.2018, 08:09

Danke für deine Antwort. :)