vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Wer kennt sich mit XML,XSD und VB.NET aus? 
Autor: Jumula
Datum: 07.04.05 11:28

Hallo,
ich hatte schonmal einen Beitrag zu diesem Thema, aber leider waren die Ergebnisse nicht so richtig befriedigend. Zumal ich jetzt eine neue Entdeckung gemacht habe, die mich schon wieder verwirrt.

Problem: Validieren einer XML-Datei unter VB.NET

Mein verwendeter Code:
Public Function validieren(ByVal file As String) As String
 
Dim result As String
Dim resulterrors As String
 
Dim header As String
 
'reset UI information 
[error] = ""
result = ""
resulterrors = ""
isValid = True
header = ""
 
Dim xml As New XmlTextReader(file)
Dim xsd As New XmlValidatingReader(xml)
'xml.XmlResolver = 
Try
 
xsd.ValidationType = ValidationType.Schema
 
'and validation errors events go to... 
AddHandler xsd.ValidationEventHandler, AddressOf MyValidationEventHandler
 
'wait until the read is over, its occuring in a different thread - kinda like 
' when your walking to get a cup of coffee and your mind is in Hawaii 
While xsd.Read()
End While
 
' Check whether the document is valid or invalid. 
If isValid Then
header = "Document is valid"
Else
header = "Document is invalid"
End If
Catch a As UnauthorizedAccessException
'dont have access permission 
[error] = a.Message
Catch a As Exception
'and other things that could go wrong 
[error] = a.Message
Finally
    'Close the reader.
    If Not (xsd Is Nothing) Then
        xsd.Close()
    End If
 
End Try
resulterrors = [error]
result = header
If InStr(result, "is valid") <> 0 Then
    validieren = ""
Else
    validieren = "Result:" & result & vbCrLf & "Resulterrors:" & resulterrors
End If
End Function
'handle our validation errors
Public Sub MyValidationEventHandler(ByVal sender As Object, ByVal args As _
  System.Xml.Schema.ValidationEventArgs)
    isValid = False
    'MsgBox("Exception=" & args.Exception.ToString & vbCr & "Message=" & 
    ' args.Message & "Severity=" & args.Severity)
    [error] += args.Message + ControlChars.Lf + ControlChars.Lf
End Sub 'MyValidationEventHandler
So, das sollte eigentlich funktionieren..habe es aus Hilfeseiten und Beispielprogrammen aus dem Web zusammengebastelt.

Für meine xml-Datei kommt allerdings ein Fehler raus:
Document is invalid
The attribute TargetNamespace does not match the designated namespace URI. An Error occured in file….(in meinem Schema)
..und dann kommen noch Fehlermeldungen, dass keines meiner Elemente deklariert wären.
Element meinNS:meinElement is not declared….

SO,
Wenn ich allerdings das Validieren in VB6 programmiere, wie ich es schon in früheren Programmen getan habe und wir es hier in der Firma auch schon EINSETZEN, kommt VALID raus.
Hier der Code:

Private Function Schema_Pruefung(ByVal strXML As String) As Boolean
    ' Variablendeklaration
    Dim XMLSchema As Object
    Dim XMLdom As Object
    Dim blnRueckgabe As Boolean
    Dim fso As Scripting.FileSystemObject
    ' Fehlerbehandlung
    On Error GoTo fehler
    ' Variableninitialisierung
    blnRueckgabe = True
    ' Objektinstanzierung
    Set XMLSchema = CreateObject("Msxml2.XMLSchemaCache.4.0")
    Set XMLdom = CreateObject("Msxml2.DOMDocument.4.0")
    Set fso = CreateObject("Scripting.FileSystemObject")
 
    ' Schemaprüfung
    ' XML-Daten aus Temp-Datei (über XSD-Schema) in DOM einlesen
    XMLdom.async = False
    XMLdom.validateOnParse = True
    XMLdom.Load (strXML)
 
    ' Schema-Prüfung
    If XMLdom.parseError.errorcode <> 0 Then
        ' Fehlermeldung
        blnRueckgabe = False
        MsgBox ("Errorcode=" & XMLdom.parseError.errorcode)
        ' XML_Fehler XMLdom.parseError
    End If
 
    ' XML-Objekte zerstören
    Set XMLdom = Nothing
    Set XMLSchema = Nothing
    ' Objekt zerstören
    Set fso = Nothing
    ' Rückgabe
    Schema_Pruefung = blnRueckgabe
    Exit Function
' Fehlerbehandlung
fehler:
    ' Rückgabe
    Schema_Pruefung = False
End Function
Als ich das letzte Mal einen Beitrag zu dem Thema gestartet hatte, kam raus, dass ich in meiner XML-Datei statt xsi:noNamespaceschemalocation=“meinschema.xsd“ besser
Xsi:Schemalocation=“meinNS meinschema.xsd“ schreiben sollte.
Mittlerweile habe ich das noch öfter ausprobiert und es funktioniert nur bei meiner dämlichen Beispieldatei aber nicht beim der richtigen Datei. Irgendwo ist da noch eine Unstimmigkeit, aber ich weiß absolut nicht wo.
Und außerdem ist es doch so: Die Dateien sind von jemand anderem entwickelt worden. Ich kann daran eigentlich nichts ändern.
UND die DATEIEN WERDEN JA AUCH von XMLSPY als VALID angesehen.
ES kann doch nicht sein, dass bestehende XML-Dateien geändert werden müssen, nur weil sie plötzlich mit VB.NET validiert werden anstatt mit VB6!?!!

Über Hilfe würde ich mich sehr sehr freuen,
Danke schön!!!

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Wer kennt sich mit XML,XSD und VB.NET aus?3.115Jumula07.04.05 11:28
Re: Wer kennt sich mit XML,XSD und VB.NET aus?2.488ModeratorDaveS07.04.05 12:02
Re: Wer kennt sich mit XML,XSD und VB.NET aus?2.705Jumula07.04.05 12:28
Re: Wer kennt sich mit XML,XSD und VB.NET aus?2.590ModeratorDaveS07.04.05 13:36
Re: Wer kennt sich mit XML,XSD und VB.NET aus?2.459Jumula07.04.05 15:29
Re: Wer kennt sich mit XML,XSD und VB.NET aus?2.417ModeratorDaveS07.04.05 15:46
Re: Wer kennt sich mit XML,XSD und VB.NET aus?2.466Jumula08.04.05 08:52
Re: Wer kennt sich mit XML,XSD und VB.NET aus?2.694Jumula08.04.05 08:57
Re: Wer kennt sich mit XML,XSD und VB.NET aus?2.806ModeratorDaveS08.04.05 11:16
Re: Wer kennt sich mit XML,XSD und VB.NET aus?2.507ModeratorDaveS10.04.05 18:01
Re: Wer kennt sich mit XML,XSD und VB.NET aus?2.581Jumula11.04.05 08:24

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel