xml einlesen

  • Excel

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von ludl8615.

    xml einlesen

    Hallo,
    Ich versuche seit 2 Tagen eine xml Datei, bzw deren Werte einzulesen.. Egal wie ich es anstelle, ich komm einfach nicht weiter. Und mitlerweile hab ich mich auch schon zu tode gegooglet und alles ausprobiert was mir irgendwie in die Finger kam.

    Um folgendes xml geht es:

    XML-Quellcode

    1. <?xml version="1.0" standalone="yes"?>
    2. <ProjektDS xmlns="http://tempuri.org/ProjektDS.xsd">
    3. <ProjLaststufen>
    4. <ID>15</ID>
    5. <ZelleID>0</ZelleID>
    6. <Name>LS1</Name>
    7. <SumAuflast>0.022652</SumAuflast>
    8. <SumLaststufen>0</SumLaststufen>
    9. </ProjLaststufen>
    10. <ProjLaststufen>
    11. <ID>16</ID>
    12. <ZelleID>0</ZelleID>
    13. <Name>LS2</Name>
    14. <SumAuflast>0.015101</SumAuflast>
    15. <SumLaststufen>0</SumLaststufen>
    16. </ProjLaststufen>
    17. <ProjLaststufen>
    18. <ID>17</ID>
    19. <ZelleID>0</ZelleID>
    20. <Name>LS3</Name>
    21. <SumAuflast>0.037753</SumAuflast>
    22. <SumLaststufen>0</SumLaststufen>
    23. </ProjLaststufen>
    24. .
    25. .
    26. .
    27. <ProjIntervall>
    28. <ID>110</ID>
    29. <LS_ID>21</LS_ID>
    30. <Periode>1</Periode>
    31. <Messabstand>01:00:00</Messabstand>
    32. </ProjIntervall>
    33. <ProjIntervall>
    34. <ID>111</ID>
    35. <LS_ID>21</LS_ID>
    36. <Periode>00</Periode>
    37. <Messabstand>01:30:00</Messabstand>
    38. </ProjIntervall>
    39. <ProjEigenschaften>
    40. <ID>0</ID>
    41. <Zelle>Variabel 70</Zelle>
    42. <Laststufenanzahl>7</Laststufenanzahl>
    43. <Projektname>Hubland</Projektname>
    44. <Projektnummer>218080</Projektnummer>
    45. <Labornummer>18-1700</Labornummer>
    46. <Port>COM6</Port>
    47. <Probenhoehe>20</Probenhoehe>
    48. <Sachbearbeiter>Oechsner</Sachbearbeiter>
    49. <RingSchwebend>true</RingSchwebend>
    50. <RingFest>false</RingFest>
    51. <Kompression>true</Kompression>
    52. <Quelldruck>false</Quelldruck>
    53. <Quellhebung>false</Quellhebung>
    54. <Flaeche>0,0038485</Flaeche>
    55. <LetzteMessung>true</LetzteMessung>
    56. <AuslagerStandPfad>C:\Users\Probeneingang\Desktop\Ausgelagerte Messdateien</AuslagerStandPfad>
    57. </ProjEigenschaften>
    58. </ProjektDS>



    Zum einlesen verwende ich habe ich folgenden VBA code(schnipsel):

    Quellcode

    1. Private Sub ImportXMLList(ByVal Pfad As String, ByVal Dateiname As String)
    2. Dim path As String
    3. Dim xmlDoc As New MSXML2.DOMDocument60
    4. Dim xmlKnoten As MSXML2.IXMLDOMElement
    5. Dim xmlAttribut As Object
    6. Dim xpathKnoten As String
    7. path = Replace(Pfad, "*.csv", Dateiname & ".xml")
    8. xmlDoc.async = False
    9. xmlDoc.validateOnParse = True ' Auf Fehler prüfen
    10. xmlDoc.Load (path) ' XML-Datei laden
    11. If xmlDoc.Load(path) = False Then
    12. MsgBox "XML-Datei: '" & path & "' wurde nicht gefunden"
    13. Exit Sub
    14. ElseIf xmlDoc.parseError = True Then
    15. MsgBox "XML-Datei: '" & path & "' hat fehlerhaften Aufbau (ist nicht 'wohlgeformt')"
    16. Exit Sub
    17. End If
    18. xmlDoc.SetProperty "SelectionLanguage", "XPath" ' Suchen soll mittels XPath erfolgen
    19. ' Auf Knoten gehen
    20. Set xmlKnoten = xmlDoc.SelectSingleNode("//ProjektDS/ProjEigenschaften") ' XPath-Anweisung
    21. If xmlKnoten Is Nothing Then
    22. MsgBox "Knoten nicht gefunden. Vermutlich falsche XML-Struktur"
    23. Exit Sub
    24. End If
    25. End Sub



    Leider bleibt xmlKnoten immer leer und die MsgBox "Knoten nicht gefunden. Vermutlich falsche XML-Struktur" wird angezeigt. Wie komme ich bitte an die Knoten???????? Ich brauche die Daten innerhalb des ProjEigenschaften-Knoten. Also Zb. Zelle oder Projektnummer


    Danke für eure Hilfe!!
    Ohne die Zeile xmlDoc.SetProperty "SelectionLanguage", "XPath" ' Suchen soll mittels XPath erfolgen läuft's bei mir.

    ##########

    btw: Zeile#12 und #14 ist quasi moppelt gedoppelt. Lass die Zeile xmlDoc.Load (path) weg, denn #14 lädt die Datei und gibt gleichzeitig zurück, ob der Vorgang erfolgreich war.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.

    VaporiZed schrieb:

    Ohne die Zeile xmlDoc.SetProperty "SelectionLanguage", "XPath" ' Suchen soll mittels XPath erfolgen läuft's bei mir.


    Hallo VaporiZed,
    Vielen Dank für die Hilfe!

    Tatsächlich?? Das hatte ich auch schon mehrmals versucht (gerade auch nochmal) aber weiterhin wird die MsgBox "Knoten nicht gefunden..." ausgegeben. Bei dir ist der xmlKnoten also nicht leer? Verstehe ich nicht...
    Dass ich "Microsoft XML, v6.0" nutze ist ja klar, das wirst du auch geladen haben.
    Korrektur: Es läuft, aber nur wenn ich statt Microsoft xml 6.0 die 3.0 als Verweis hinzufüge und somit DOMDocument30 statt DOMDocument60 nehme. Hatte ich gemacht, weil mir die 60 erst nicht erkannt wurde. Hab den erstbesten Verweis, also xml 3.0 hergenommen und dann ging's. Mit der 6.0 nicht möglich. Musst wohl schauen, ob sich da was bei den Spezifikationen geändert hat.
    Bilder
    • VbaAtWork.png

      44,07 kB, 1.062×778, 16 mal angesehen
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.