WWW
HINWEIS
Kapitel 12: XML in Theorie und Praxis
Einen kostenlosen Hex-Editor finden Sie beispielsweise unter http://www.mirkes.de/de/freeware/tinyhex.php.
Zum Vergleich hier das UTF-16-XML-Dokument:
Abbildung 12.57 UTF-16-Kodierung im Hex-Editor (beachten Sie die BOM am Anfang der Daten)
Die Ansicht im Internet Explorer
Abbildung 12.58 Das erzeugte XML-Dokument im Internet Explorer
Laden UTF-8-/UTF-16-Format aus einem ADO-Stream
XML-Datei; DOMDocument-, Stream-Objekt; LoadFromFile-, LoadXML-Methode; XML-Eigenschaft;
Versuchen Sie XML-Daten per ADO-Stream zu lesen, kann es schnell passieren, dass Sie über eine Fehler-
meldung stolpern. Ursache ist in diesem Fall meist eine falsch interpretierte Kodierung, da der ADO-
Stream per Default von einer UTF-16-Kodierung ausgeht. Mit der Eigenschaft Charset können Sie Einfluss
auf die Interpretation der Daten nehmen.
Sie benötigen die mit dem vorhergehenden Beispiel (siehe Seite 808) erzeugten XML-Dateien.
Oberfläche
Auf ein Formular verzichten wir, da es um die reine Dateiausgabe geht.
Quelltext
Fügen Sie in ein Modul den folgenden Code ein:
Sub Laden_verschiedener_Kodierungen()
Dim doc As MSXML2.DOMDocument
810
HINWEIS
Dim strm As ADODB.stream
Set strm = New ADODB.stream
strm.Open
Laden einer UTF-8-kodierten Datei, Sie
müssen
Charset festlegen:
strm.Charset = "UTF-8"
strm.LoadFromFile CurrentProject.Path & "\" & "test_UTF-8.xml"
Alternativ
laden Sie eine UTF-16 kodierte Datei auch ohne Angabe des Charsets:
' strm.LoadFromFile CurrentProject.Path & "\" & "test_UTF-16.xml"
strm.Position = 0
Set doc = New MSXML2.DOMDocument
If Not doc.loadXML(strm.ReadText) Then
MsgBox "Daten konnten nicht geladen werden!"
Else
MsgBox doc.XML
End If
End Sub
Vergessen Sie nicht die »Microsoft XML«-Library einzubinden.
Die angezeigten UTF-16-Daten:
Abbildung 12.59 Die geladenen XML-Daten (UTF-16)
Im Vergleich die geladenen UTF-8-Daten:
Abbildung 12.60 Die geladenen XML-Daten (UTF-8)
Dem aufmerksamen Leser wird sicher nicht entgangen sein, dass bei der UTF-8-Variante die Kodierungs-
information (Attribut encoding) aus den Processing-Instructions entfernt wurde. Speichern Sie diese
Daten per DOMDocument, so wird wieder im UTF-8-Format gesichert. Alternativ können Sie jedoch Ein-
fluss auf die Processing Instructions nehmen, um im UFT-16-Format zu speichern:
...
doc.childNodes(0).Attributes.getNamedItem("encoding").nodeValue = "UTF-16"
doc.Save "c:\pppp.xml"
811
Praxisbeispiele

Get Microsoft Office Access 2007-Programmierung - Das Handbuch now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.