XML-Prüfung gegen XSD mit VBA

In einem meiner früheren Beitrage habe ich XML-basierte Schlüsselverzeichnisse vorgestellt, deren Struktur mit XSD-Dateien beschrieben wird. Nun möchte ich daran anknüpfen und zeigen, wie einfach die Validierung einer solchen XML-Datei unter VBA realisiert werden kann.

Um das Beispiel nachstellen zu können, werden lediglich eine XML-Datei und eine dazu passende Schema-Datei im XSD-Format benötigt. 


Dim strXmlDateiPfad As String
Dim strXsdDateiPfad As String

strXmlDateiPfad = ThisWorkbook.Path & "\schluesselVerzeichnis.xml"
strXsdDateiPfad = ThisWorkbook.Path & "\schluesselVerzeichnis.xsd"

Set objXMLDatei = CreateObject("MSXML2.DOMDocument.6.0")

Set objXMLDatei.Schemas = CreateObject("MSXML2.XMLSchemaCache.6.0")
objXMLDatei.Schemas.Add "", strXsdDateiPfad

objXMLDatei.Load (strXmlDateiPfad)

If objXMLDatei.parseerror.errorCode <> 0 Then
    Err.Raise Number:=1, Description:="Fehler: " & objXMLDatei.parseerror.reason
End If

Diese Dateien werden im Code durch Objekte repräsentiert. Als Erstes definieren wir in der Zeile 7 das XML-Objekt und weisen seiner Eigenschaft Schemas (Zeile 9) das erstellte XSD-Objekt zu. Um nun die Verbindung zu der konkreten Schema-Datei herzustellen, fügen wir deren Pfad mit dem Operator Add hinzu(Zeile 10).

Ab diesem Punkt sind dann alle Vorbereitungen getroffen und wir können in der Zeile 12 den Inhalt der XML-Datei in das Objekt geladen. Dabei wird automatisch die Validierung der XML-Datei durchgeführt, deren Ergebnis wir im Attribut errorCode ablesen können.
Lief die Validierung auf einen Fehler, können wir seine Beschreibung dem Attribut reason entnehmen. Die Fehlermeldung ist in der Regel sehr ausführlich und zeigt einem genau die Stelle (in der Regel ein Knoten), bei dem der erste Fehler festgestellt wurde.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.