Hallo,
ich habe folgende Problematik, ich möchte Daten aus einer XML-Datei in ein Excel Datenblatt einlesen, was soweit schon funktioniert. Problem ist nur, dass nicht alle „nodes“ ausgegeben werden. In meinem Beispiel fehlt immer die „quantity“. Ich kann zwar das ganze zweimal mit unterschiedlichen nodes durchlaufen lassen wie z.B.:
Set nodes = dom.selectnodes("//size")
Set nodes = dom.selectnodes("//stock")
Aber ich würde gern die Daten in einem Durchlauf haben, da sonst die Zuordnung nicht mehr möglich ist. Bei fehlenden „nodes“ wird ja keine Leerzeile erzeugt sondern einfach weitergeschrieben…
So sollte das Ergebnis aussehen:
id 21
code 330-21
weight 0
id 1
quantity 8
id 22
code 330-22
weight 0
id 1
quantity 5
id 20
code 330-20
weight 0
id 23
code 330-23
weight 0
Hier mein VB und XML:
Option Explicit
'Importiere Daten aus XML-Datei
Sub Importieren()
Dim strPath As String
Dim dom As Object, i As Long, att As Object
Dim nodes As Object, node As Object
strPath = CurDir & „\lager.xml“
Set dom = CreateObject(„MSXML2.DOMDocument“)
dom.Load strPath
'Artikel-Daten auslesen
Set nodes = dom.selectnodes("//size")
For Each node In nodes
i = i + 1
For Each att In node.Attributes
If att.Name = „code“ Then
Cells(i, 1).Value = att.Value
End If
Next
Next
Set dom = Nothing
End Sub
Die XML-Datei (ein Ausschnitt) sieht folgendermaßen aus:
<?xml version="1.0" encoding="UTF-8"?>Danke im Voraus,
Thomas