Problem mit XML

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von Memphis78.

    Problem mit XML

    Hab da ein Problem. Und zwar will ich ein XML-Document aus dem Internet verarbeiten bzw. erstmal auf meiner Platte speichern.

    Das Problem an der Sache ist, dass man diese Datei aufruft über armory.wow-europe.com/guild-info.xml?r=Rexxar&gn=Death
    Wenn ich mir dann im FireFox den Quelltext anzeigen lasse, sehe ich den Quelltext als XML-Datei. Allerdings kann ich als zu verarbeitende Datei nicht die aus dem Internet nehmen, da die ja keine *.xml ist, sondern ein Link mit noch ein paar Parametern. Es kommt dann imemr die Fehlermeldung "Das erwartete DTD-Markup wurde nicht gefunden."

    Wenn ich mir die Datei allerdings innerhalb meines Programmes in einem Webbrowser aufrufe und versuche diesen Quelltext zu speichern, komme ich auch nicht weiter. da er dann kein XML mehr als Quelltext anzeigt.

    Hat dafür jemand eine Lösung parat?
    Und genau da ist mein Problem - so wollte ich es ja machen, aber er läd mit eben nicht die XML-Datei runter sondern das komplette Layout der Seite in HTML.

    Aber ich will ja eben die XML-Datei, welche ich sehe, wenn ich die Seite im FireFox aufrufe und mir dort den Seitenquelltext anzeigen lasse.
    Hab es ja schon versucht mit ...

    VB.NET-Quellcode

    1. Dim doc As New XmlDocument
    2. doc.Loadl("http://armory.wow-europe.com/guild-info.xml?r=Rexxar&gn=Death")


    Aber ich krieg dann immer eine Fehlermeldung ...
    Das erwartete DTD-Markup wurde nicht gefunden. Zeile 1, Position 3.


    Ich vermute mal, das passiert, weil ich ja im Prinzip keine XML-Datei lade sondern einen Link mit Parametern hinten dran. Aber wieso gibt mir dann der Quelltext im Firefox reines XML aus?
    Hab das Problem gelöst - angeblich benötigt die fragliche Seite einen aktuellen User-Agent, da die Seite sonst nicht korrekt ausgegeben wird.

    Hab das so gemacht...

    VB.NET-Quellcode

    1. Dim doc As String = Functions.DownloadXML("http://armory.wow-europe.com/guild-info.xml?r=Rexxar&gn=Death")
    2. System.IO.File.WriteAllText(System.AppDomain.CurrentDomain.BaseDirectory & "guild_info.xml", doc)


    Und die Function ansich sieht so aus...

    VB.NET-Quellcode

    1. Public Shared Function DownloadXML(ByVal URL As String) As String
    2. Dim IoStream As System.IO.Stream
    3. Dim StrRead As System.IO.StreamReader
    4. Try
    5. Dim Request As HttpWebRequest = HttpWebRequest.Create(URL)
    6. Request.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5"
    7. IoStream = Request.GetResponse.GetResponseStream
    8. StrRead = New System.IO.StreamReader(IoStream)
    9. Return StrRead.ReadToEnd
    10. Catch ex As Exception ' bei beliebigem Fehler
    11. Return vbNullString
    12. Finally
    13. StrRead.Close()
    14. IoStream.Close()
    15. End Try
    16. End Function


    Wichtig war also scheinbar die Angabe eines User-Agents beim Request