Laden...

Wie kann ich beim XML Reader Exceptions voneinander Unterscheiden?

Erstellt von CrocodileDundee vor 3 Jahren Letzter Beitrag vor 3 Jahren 475 Views
C
CrocodileDundee Themenstarter:in
51 Beiträge seit 2018
vor 3 Jahren
Wie kann ich beim XML Reader Exceptions voneinander Unterscheiden?

Hallo zusammen,
ich parse eine XML-Datei mit XMLReader.

Dabei möchte ich zwischen den Exceptions

  • "Unerwartetes Dateieende" und
  • "Fehlendes Start-Element" (d.h. ein Knoten wurde geschlossen, der vorher nicht geöffnet wurde)
    unterscheiden können.

Die Property "Message" möchte ich dazu nicht verwenden, da deren Formulierung sich eventuell ändern könnte und das Programm auch auf verschieden-sprachigen Systemen laufen soll.

Auch die Property "HRESULT" bietet mir keine Unterscheidungsmöglichkeit, da der zurückgegebene Errorcode immer gleich ist (0x80131940).

Und außerdem werden beide Exceptions mit der Klasse "XmlException" abgefangen.

Alle übrigen Properties der Exception-Klassen scheinen auch keine Unterscheidungsmöglichkeit zu bieten.

Bin daher momentan ziemlich ratlos und hoffe auf einen Tipp von euch.

Vielen Dank und viele Grüße
Frank

16.806 Beiträge seit 2008
vor 3 Jahren

Bei der XmlDocument-Klasse (bzw. System.Xml Namespace) ist das leider nur über die Messages und damit Strings möglich.
Wenn Du sowas brauchst dann bleibt Dir an der Stelle nur der Wechsel auf einen anderen Parser übrig.

T
2.219 Beiträge seit 2008
vor 3 Jahren

Klingt auch erst einmal danach, dass du ungültiges XML bekommst und dieses Validieren musst.
Hast du hier eine Schemadatei, dann kannst du das XmlDocument per Validate auch validieren und prüfen lassen.
Exceptions sind hier keine sinnvolle Lösung und auch nicht brauchbar um Xml Validieren zu lassen.
Dafür kann es auch noch weitere Fehler geben, die du nicht über Exception Messages abfangen kannst.

Falls du kein Schema hast, dann wird es knifflig.
Wenn die Struktur fest ist, könntest du selbst ein Schema für die Dateien anlegen und die Dateien gegen das Schema validieren lassen.

XmlDocument.Validate

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.