Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Einlesen einer xml-Datei

Begonnen von hajott, Heute um 14:56:47

⏪ vorheriges - nächstes ⏩

hajott

Hallo Wissende,

ich möchte regelmäßig Daten in Access einlesen, die ich aus einer xml-Datei erhalte. Die Importfunktion von Access bringt mir nur leere Felder. Laut meiner Internetrecherche liegt das wohl daran, dass ich Daten auf drei Ebenen habe. Die ersten drei Zeilen sehen beispielhaft so aus:
<ebene1 var1="hallo" var2="3" var4="49.73" usq. />
   <ebene2 var5="3" var6="q" usw />
       <ebene3 var7="r" usw />

Ich habe es geschafft, ein Programm zu bauen, welches die Zeilen ausliest, die Feldnamen und Variablen sortiert, eine ID dazugibt und mit einer INSERT INTO in vorbereitete Tabellen schreibt. Dazu ist noch zu sagen, dass einige Variablen in einigen Zeilen nicht vorkommen (wie in ebene1 var3), deshalb ist die Zuordnung zum Feldnamen erfdorderlich.

Wie gesagt, es klappt, dauert aber äußerst lange. Wie ich am fröhlichen Blinken der Statusbar sehe, läuft (logischerweise) jede Abfrage einzeln. Neben der Wartezeit stört mich, dass die Lösung vielleicht doch nicht die beste ist, zumal ich die Daten nach dem Import auch noch überarbeiten muss.

Als erstes fiel mir ein: Recordset beschreiben und einmalig in die Tabelle übergeben. Das würde ich sogar hinbekommen, aber mein Test scheiterte schon am "Dim objRs As New ADODB.Recordset", was er nicht kennt.
Aus meiner Zeit als ich beruflich ein bisschen an Access gebaut habe, weiß ich, dass man ggf.  Add-Ins einschalten muss. Das Fenster ist bei mir aber leer ! Wisst ihr, woran das liegt oder was man daran machen könnte? (Falls das der Grund ist: ich habe kein natives Windows, sondern arbeite mit Mac und Parallels)

Als zweites wollte ich mal fragen: Gibt es nicht doch eine elegantere Möglichkeit, eine dreistufige XML einzulesen?`(Falls es hilft: Dieselben Daten würden auch als JSON vorliegen)

Vielen Dank im voraus für alle Tipps

Hans-Jürgen

Knobbi38

#1
Hallo Hans-Jürgen,

es gibt sicherlich einige verschiedene Methoden, XML-Daten in Access zu importieren, allen vorweg schlichtweg mit dem Assistenten für "externe Daten". Die Schritte kann man dann Speichern und dann immer wieder neu anwenden. Selbst eine Transformation per xslt wäre möglich, wenn die Struktur der XML-Datei nicht passend ist.

Eine andere Variante wäre, da ja eine XML-Datei nichts anderes als eine Textdatei ist, diese mit einer Komponente oder einfach per Code zu parsen und dann die Daten an eine Tabelle anzufügen.

Leider reichen deine Informationen (noch) nicht aus, um wirklich zielführende Hinweise zu geben.

Zum Thema JSON:
Da Access das nicht unterstützt, müsste man das selber programmieren. Sicherlich kann man sich dafür dann einiger vorhanden Bibliotheken bedienen, so dass man nicht alles neu erfinden muss. Einfach auf Github mal nach VBA + JSON suchen.

Knobbi38

PS:
Hast du mal hier im Forum nach dem Begriff "XML" gesucht?



hajott

Hallo Knobbi38,

das Parsing per Code mache ich ja gerade, ist aber langsam, da jede der zigtausend Zeilen in einen einzelnen INSERT INTO umgesetzt wurd

Meine Hoffnung war, dass man die Daten vielleicht ib eiben Recordset schreiben und dort auch noch anpassen kann. Erst am Ende wird das in eine Tabelle übertragen.

Aber ich scheitere daran, das Recordset überhaupt zu definieren (siehe Frage), gibts  dazu vielleicht noch was zu wissen?

Vieleb Dank

Hans-Jürgeb