| |

VB.NET - FortgeschritteneWer 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!!!
|  |
 Wer kennt sich mit XML,XSD und VB.NET aus? | 3.116 | Jumula | 07.04.05 11:28 |   Re: Wer kennt sich mit XML,XSD und VB.NET aus? | 2.488 | DaveS | 07.04.05 12:02 |   Re: Wer kennt sich mit XML,XSD und VB.NET aus? | 2.705 | Jumula | 07.04.05 12:28 |    Re: Wer kennt sich mit XML,XSD und VB.NET aus? | 2.590 | DaveS | 07.04.05 13:36 |   Re: Wer kennt sich mit XML,XSD und VB.NET aus? | 2.459 | Jumula | 07.04.05 15:29 |    Re: Wer kennt sich mit XML,XSD und VB.NET aus? | 2.417 | DaveS | 07.04.05 15:46 |   Re: Wer kennt sich mit XML,XSD und VB.NET aus? | 2.466 | Jumula | 08.04.05 08:52 |   Re: Wer kennt sich mit XML,XSD und VB.NET aus? | 2.694 | Jumula | 08.04.05 08:57 |    Re: Wer kennt sich mit XML,XSD und VB.NET aus? | 2.806 | DaveS | 08.04.05 11:16 |    Re: Wer kennt sich mit XML,XSD und VB.NET aus? | 2.507 | DaveS | 10.04.05 18:01 |     Re: Wer kennt sich mit XML,XSD und VB.NET aus? | 2.581 | Jumula | 11.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 |
  |
|
sevWizard für VB5/6 
Professionelle Assistenten im Handumdrehen
Erstellen Sie eigene Assistenten (Wizards) im Look & Feel von Windows 2000/XP - mit allem Komfort und zwar in Windeseile :-) Weitere InfosTipp des Monats TOP Entwickler-Paket 
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1866.50 EUR...
Jetzt nur 979,00 EURWeitere Infos
|
|
|
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
|
|