XML mit gleichen Attributen lesen

  • VBScript

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von supermario73.

    XML mit gleichen Attributen lesen

    Hallo zusammen
    Bin am verzweifeln, denn ich möchte aus dieser XML Datei, welche gleiche nodes mit attributen hat (als Beispiel Zeile 18 "from"), auslesen:

    XML-Quellcode

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. -<weatherdata>
    3. -<location>
    4. <name>Magden</name>
    5. <type/>
    6. <country>CH</country>
    7. <timezone>3600</timezone>
    8. <location geobaseid="2659798" geobase="geonames" longitude="7.8118" latitude="47.5262" altitude="0"/>
    9. </location>
    10. <credit/>
    11. -<meta>
    12. <lastupdate/>
    13. <calctime>0</calctime>
    14. <nextupdate/>
    15. </meta>
    16. <sun set="2020-01-02T15:48:01" rise="2020-01-02T07:16:37"/>
    17. -<forecast>
    18. -<time to="2020-01-02T12:00:00" from="2020-01-02T09:00:00">
    19. <symbol var="01d" name="Klarer Himmel" number="800"/>
    20. <precipitation/>
    21. <windDirection name="SouthEast" code="SE" deg="140"/>
    22. <windSpeed name="Calm" unit="m/s" mps="0.8"/>
    23. <temperature unit="celsius" max="6.62" min="5.64" value="6.62"/>
    24. <feels_like unit="celsius" value="4.05"/>
    25. <pressure unit="hPa" value="1030"/>
    26. <humidity unit="%" value="62"/>
    27. <clouds unit="%" value="Klarer Himmel" all="0"/>
    28. </time>
    29. -<time to="2020-01-02T15:00:00" from="2020-01-02T12:00:00">
    30. <symbol var="03d" name="Mäßig bewölkt" number="802"/>
    31. <precipitation/>
    32. <windDirection name="SouthEast" code="SE" deg="135"/>
    33. <windSpeed name="Calm" unit="m/s" mps="0.57"/>
    34. <temperature unit="celsius" max="3.64" min="2.9" value="3.64"/>
    35. <feels_like unit="celsius" value="1.25"/>
    36. <pressure unit="hPa" value="1029"/>
    37. <humidity unit="%" value="77"/>
    38. <clouds unit="%" value="Mäßig bewölkt" all="32"/>
    39. </time>
    40. -<time to="2020-01-02T18:00:00" from="2020-01-02T15:00:00">
    41. <symbol var="02n" name="Ein paar Wolken" number="801"/>
    42. <precipitation/>
    43. <windDirection name="South-southeast" code="SSE" deg="163"/>
    44. <windSpeed name="Calm" unit="m/s" mps="0.72"/>
    45. <temperature unit="celsius" max="0.29" min="-0.2" value="0.29"/>
    46. <feels_like unit="celsius" value="-2.44"/>
    47. <pressure unit="hPa" value="1030"/>
    48. <humidity unit="%" value="86"/>
    49. <clouds unit="%" value="Ein paar Wolken" all="16"/>
    50. </time>


    Für das erste "from" klappt es auch. Doch wie kann der Code angepasst werden (Zeile 12/13), dass ich den ersten "from" auf eine Variable SmartTags("test1"), zweite auf "from" SmartTags("test2") usw. auf eine Variable schreiben kann.

    Visual Basic-Quellcode

    1. On Error Resume Next
    2. Dim xmlFile, item, tagName, tagValue, XMLroot
    3. Dim ChildNode, field, Nodelist, i
    4. Dim forecasttag, node, x
    5. Set xmlFile = CreateObject("Microsoft.XMLDOM")
    6. If xmlFile.Load("D:\forcast.xml") Then
    7. Set XMLroot= xmlFile.documentElement
    8. x=0
    9. SmartTags("test"&x&"") = xmlFile.SelectSingleNode("weatherdata/forecast/time").Attributes.getNamedItem("from").Text
    10. End If
    11. If Err.Number <> 0 Then
    12. ShowSystemAlarm "Error #" & CStr(Err.Number) & " " & Err.Description
    13. Err.Clear
    14. Exit Sub
    15. End If


    Vielen Dank für Eure konstruktive Hilfe.

    Thema verschoben ~ EaranMaleasi

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „EaranMaleasi“ ()

    @supermario73 Willkommen im Forum. :thumbup:
    Bist Du sicher, dass Du mit VB6 arbeitest, oder ises VB.NET?
    [Allgemein] VB.NET, VB6, VBA, VBS — Mit welcher Sprache programmiere ich eigentlich?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    supermario73 schrieb:

    einfach Visual Basic
    Wenn Du das Studio klick mal auf
    Hilfe => Über Microsoft Visual Studio
    und berichte, wasser da anzeigt.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @supermario73 OK, also weder VB6 noch VB.NET, ich lass Dich mal in das Script-Unterforum verschieben.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    O.K. nun bin ich selber auf die Lösung gekommen:

    Visual Basic-Quellcode

    1. Set xmlFile = CreateObject("Microsoft.XMLDOM")
    2. If xmlFile.Load("D:\forcast.xml") Then
    3. x=0
    4. For Each node In xmlFile.selectNodes("//weatherdata/forecast/time")
    5. SmartTags("test"&x&"") = node.getAttribute("from")
    6. x=x+1
    7. Next
    8. End If
    9. If Err.Number <> 0 Then
    10. ShowSystemAlarm "Error #" & CStr(Err.Number) & " " & Err.Description
    11. Err.Clear
    12. Exit Sub
    13. End If