I know nothing of xml but like you, I managed to cobble something together. See attached which contains this (amateur) code:
Private Sub btnRefresh_Click()
btnRefresh.Caption = "Refreshing..."
btnRefresh.Enabled = False
Dim req As New XMLHTTP
Dim Resp As New DOMDocument
Dim FORECASTDATA As Worksheet
Dim Weather As IXMLDOMNode
Dim rw As Long
Dim SiteList As Range
Dim Site As Variant
Dim SiteName As String
Dim NextSitePtr As Long
Set FORECASTDATA = Sheets("Forecast Data")
With Sheets("site list")
Set SiteList = .Range("a1").Resize(.Cells(Rows.Count, "A").End(xlUp).Row, 1)
End With 'site list
Application.ScreenUpdating = False
rw = 0
For Each Site In SiteList
SiteName = Mid(Site.Value, 8, InStr(8, Site.Value, "/") - 8)
req.Open "GET", Site.Value, False
req.send
Resp.LoadXML req.responseText
Set gggg = Resp.getElementsByTagName("temperature")
For Each temperature In gggg
Set Location = temperature.ParentNode
Set myTime = Location.ParentNode
FromDateAndTime = myTime.Attributes.getNamedItem("from").Value
FromDate = DateValue(Replace(Replace(FromDateAndTime, "T", " "), "Z", ""))
FromTime = TimeValue(Replace(Replace(FromDateAndTime, "T", " "), "Z", ""))
' ToDateAndTime = myTime.Attributes.getNamedItem("to").Value
' ToDate = DateValue(Replace(Replace(ToDateAndTime, "T", " "), "Z", ""))
' ToTime = TimeValue(Replace(Replace(ToDateAndTime, "T", " "), "Z", ""))
myTemp = temperature.Attributes.getNamedItem("value").Value
TempUnits = temperature.Attributes.getNamedItem("unit").Value
Latitude = Location.Attributes.getNamedItem("latitude").Value
Longitude = Location.Attributes.getNamedItem("longitude").Value
' FORECASTDATA.Cells(2, 1).Resize(4, 1).Value = Range("rowheaders").Value
rw = rw + 1
FORECASTDATA.Range("theDates").Cells(rw).Value = FromDate
FORECASTDATA.Range("theDates").Cells(rw).Offset(, 1).Value = FromTime
' FORECASTDATA.Range("theDates").Cells(rw).Offset(, 2).Value = ToDate + ToTime
FORECASTDATA.Range("theTemps").Cells(rw).Value = myTemp
FORECASTDATA.Range("theLat").Cells(rw).Value = Latitude
FORECASTDATA.Range("theLon").Cells(rw).Value = Longitude
Next temperature
Next Site
Application.ScreenUpdating = True
btnRefresh.Caption = "Refresh"
btnRefresh.Enabled = True
End Sub
ps. there is no degrees Fahrenheit data at the site. You could put a conversion in.