XML kompakt auslesen

  • WP8

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    XML kompakt auslesen

    Hallo Zusammen
    Ich habe einwenig Mühe mit dem Auslesen eines XML Files. Auslesen funktioniert soweit, aber es ist meines Erachtens nicht wirklich mit wenig Code gelöst.
    api.openweathermap.org/data/2.…t=45.37&lon=8.53&mode=xml

    Ich möchte nicht für jeden Wert einen Select absetzen müssen.

    VB.NET-Quellcode

    1. Public Structure WeatherDetails
    2. Public Humidity As String
    3. Public Pressure As String
    4. End Structure
    5. Private Sub DownloadXMLWeather()
    6. Dim webClient As WebClient = New WebClient()
    7. 'webClient.Proxy = Nothing
    8. AddHandler webClient.DownloadStringCompleted, AddressOf webClient_DownloadStringCompleted6
    9. webClient.DownloadStringAsync(New Uri("http://api.openweathermap.org/data/2.5/weather?lat=" & locc.Split(",")(0) & "&lon=" & locc.Split(",")(1) & "&mode=xml"))
    10. End Sub
    11. Private Sub webClient_DownloadStringCompleted6(sender As Object, e As DownloadStringCompletedEventArgs)
    12. 'Hier fängt mein "Problem" an
    13. Dim xelement As XElement = xelement.Parse(e.Result, LoadOptions.None)
    14. Dim xECBd = From ECB In xelement.Elements("humidity") _
    15. Select New WeatherDetails With { _
    16. .Humidity = "Humidity: " & ECB.Attribute("value").Value & "%"}
    17. For Each Line In xECBd
    18. ergebnisstring += vbNewLine & (Line.Humidity)
    19. Next
    20. Dim xECBe = From ECB In xelement.Elements("pressure") _
    21. Select New WeatherDetails With { _
    22. .Pressure = "Pressure: " & ECB.Attribute("value").Value & " hPa"}
    23. For Each Line In xECBe
    24. ergebnisstring += vbNewLine & (Line.Pressure)
    25. Next
    26. End Sub


    Habt ihr eine Idee wie man das kompakter lösen kann?
    probierma

    VB.NET-Quellcode

    1. Dim xelement As XElement = xelement.Parse(e.Result, LoadOptions.None)
    2. Dim humids = From xel In xelement.<humidity> Select "Humidity: " & xel.@value
    3. Dim pressures = From xel In xelement.<pressure> Select "Pressure: " & xel.@value
    4. Dim result = String.Join(vbnewline, humids.Concat(pressures))
    Guck dir auch Xml verarbeiten mit Intellisense (Schema und XDocument) an.
    Deine WebDienst-Xml enthält vmtl. noch viel mehr Daten, und auch wirds eine eine differenzierte Schema-Datei geben zum download und einbinden.
    Und dann kannst du mit Leichtigkeit noch wesentlich komplexere Queries erstellen.