Nach "relativer" kurzer Zeit gibt es wieder einen neuen XML parser aus dem Hause MS.
Ein wenig verwunderlich, da bereits im alten Parser viele bis dahin unerledigte Dinge geregelt worden sind. Zu den bisherigen Mehtoden, Eigenschaften etc. , die alle weiterhin unterstützt werden kommen nun nochmals ca. 73!! Funktionen hinzu!!
Trotzdem fehlten viele Funktionen, die sich nach dem Standards oder Workingdrafts des W3C richten sollten. Xlink, XQuery, XML Schema etc...
Also mal schauen was es hier neues gibts. Ich habe mir mal aus der Beta die besten Methoden rausgesucht und getestet. Ergebnis: die kleinen Fehler, die hier noch auftreten sind nichts im Gegensatz zu dem was ich dafür bekomme.
Hier gibts Methoden zum Datenimport, Datenexport, Validierung, Schemaextraktion und und und.
Schauen wir uns aml einiges an:
Unterstützung für Datenbanken
Bisher habe ich immer als VBler immer zuerst ein Recordset aus der DB geholt und anschliessenddas Ding als XML Dokument abgespeichert. Jetzt nicht mehr mit
Dim strProvider as string
strProvider = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=Northwind;Data Source=SQLSERVER"
Dim xmlDoc as New MSXML5.DomDocument
xmldoc.openDB (Provider)
xmlDoc.openDB verschaffe ich mir zunächst Zugang zur Datenbank. Das kann Access oder SQL Server sein.
Anschliessend gebe ich an was ich mit den Daten anstellen möchte, wie zum Beispiel in ein XML Dokument exportieren per xmldoc.SaveToXML.
xmldoc.SaveToXML "C:myxmldoc.xml"
Validierung
Oder ein Schema erstellen lassen?
xmlDoc.CurrentDB.ExtractXSD(AUTO,Elements,"ROOT","c:myXSD.xsd")
Die Angabe dieser Parameter ist ein wenig an die des XML Exports des SQL Servers angelehnt.
Für den Fall, dass jemand eine DTD haben möchte...bitte sehr:
xmlDoc.CurrentDB.ExportDTD("c:myDTD.dtd")
Import Export von Datenbanken per XSL Template
Der absolute Hammer sollte eigentlich dieser Fall sein: XSLTemplates
Dim myXSDTemplate as new MSXML5.XSLTemplate
Die Möglichkeiten sind geradezu sagenhaft. Mittels einer XSL Vorlage, in der allerdings VB Skripte enthalten sind, kann ich nun x-beliebige Datenbanken oder Textfiles in ein XML Dokument ausgeben lassen, die sich genau nach der Schemastruktur halten.
Dadurch kann ich im nächsten Schritt mit meinem nun heissgeliebten Import
xmlDoc.ImportDB (Provider,Provider,myXSDtemplate)
diese Daten simple importieren.
Vorteil? Dadurch spare ich mir jegliche Konvertierungsfunktion oder Code-Schreibere!!
So ist es nun beispielsweise möglich aus einem beliebigen Access (oder auch CSV) bestimmte Spalten den dementprechenden Spalten in der Zieltabelle zuzuweisen und zugleich bspw. Datumskonvertierungen, Stringzerlegungen (aus "Name Vorname" werden 2 Felder Name, Vorname) vornehmen.
SAX
Auch der Umgang mit Sax ist nun ein wenig leichter geworden. Keine Interfaces mehr durch Implements, sondern eine SAX Application. Aber das werde ich in einem späteren Artikel vorstellen.
Viel Spass damit.