XML lesen aus dem Web

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von thefiloe.

    XML lesen aus dem Web

    Hallo Zusammen
    Ich habe ein "lächerliches" Problem ...
    Ich möchte ein XML aus dem Web lesen und dieses in einer Listbox ausgeben lassen. Der Code funktioniert soweit, ich weiss nur nicht wie ich ihn von einem Button aufrufe?!?

    VB.NET-Quellcode

    1. Sub download(sender As Object, e As DownloadStringCompletedEventArgs)
    2. Dim wc As WebClient = New WebClient
    3. wc.DownloadStringAsync(New Uri("http://webadresse.ch/xml.xml"))
    4. Dim xelement As XElement = xelement.Load(e.Result)
    5. Dim employees As IEnumerable(Of XElement) = xelement.Elements()
    6. For Each employee In employees
    7. lstboxx.Items.Add(employee.Element("Name").Value)
    8. Next employee
    9. End Sub


    VB.NET-Quellcode

    1. Private Sub Button_Click_1(sender As Object, e As RoutedEventArgs)
    2. ?????
    3. End Sub


    Hat jemand eine Idee?
    Da der Code ein Event darstellt kannst du diese Methode gar nicht aufrufen, da du ja keine Parameter weißt.
    Dieses Event wird gefeuert, wenn ein Download fertig ist. Das weiß genau der Webclient oder der halt runtergeladen hat aber du nicht.

    Was willst du genau reaisieren?

    lg
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten
    Ich möchte eigentlich nur ein XML vom Web auslesen.

    Der nachfolgende Teil funktioniert, wenn die XML Datei lokal liegt:

    VB.NET-Quellcode

    1. Dim xelement As XElement = xelement.Load(e.Result)
    2. Dim employees As IEnumerable(Of XElement) = xelement.Elements()
    3. For Each employee In employees
    4. lstboxx.Items.Add(employee.Element("Name").Value)
    5. Next employee




    Ich weiss aber nicht wie ich ein XML vom Web hole. Was ich noch anfügen muss, es handelt sich um eine Windows Phone Anwendung, ich muss es also mit dem WebClient Objekt machen, aber ich weiss nicht wie ...

    VB.NET-Quellcode

    1. Private Sub DownloadXML()
    2. Dim webClient = New WebClient()
    3. webClient.Proxy = Nothing
    4. AddHandler webClient.DownloadStringCompleted, AddressOf webClient_DownloadStringCompleted
    5. webClient.DownloadStringAsync(New Uri("pfad"))
    6. End Sub
    7. Private Sub webClient_DownloadStringCompleted(sender As Object, e As DownloadStringCompletedEventArgs)
    8. 'hier jetzt mit e.Result weiter.
    9. End Sub
    Es müsste eigentlich eine InnerException vorhanden sein, welche genaue Angaben zum Fehler behinhaltet. Außerdem könntest du uns bitte den Inhalt der XML zeigen.
    Ach ja da fallen mir noch ein paar andere Dinge auf(welche mit dem aktuellen Fehler nix zu tun habe, dafür aber mit dem nächsten):
    1. Prüfe ob der Download erfolgreich war. If e.Cancelled = False AndAlso e.Error Is Nothing Then ...
    2. Du kannst das Zeug aus dem Event nicht einfach der GUI übergeben. Das Problem ist, dass das Event in einem anderen Thread als der Dispatcher-Thread gefeuert wird. Deshalb musst du erst invoken: lstboxx.Dispatcher.Invoke(Sub() listboxx.Items.Add usw.)

    Ach ja. Welche .NET Framework version verwendest du? In 4.5 ginge das alles wesentlich einfacher(zwar kein Grund zum umsteigen, nur falls du 4.5 verwendest gäbe es einfachere Lösungen).


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.