Partage
  • Partager sur Facebook
  • Partager sur Twitter

Récupération du XML d'une page web

Sujet résolu
26 avril 2011 à 20:02:24

Bonjour à tous,

Contexte :
Je suis actuellement en train d'améliorer considérablement l'application issue du TP "mBiblio" du cours de Hankerspace. Cette "nouvelle" appli' est plus axée série.
Après l'ajout de l'affiche et la génération de fiches en PDF, je souhaiterais faciliter la saisie des données.


Pour cela, je souhaiterais récupérer le contenu XML d'une page web sur l'api d'allocine.

Par exemple, en allant à l'adresse "http://api.allocine.fr/xml/search?q=weeds&partner=8", je souhaite récupérer le code source de cette page qui se présente sous la forme suivante :

Structure XML


<feed>
  <page>1</page>
  <count>10</count>
  <results type="movie">8</results>
  <results type="tvseries">1</results>
  <results type="person">7</results>
  <results type="photo">93</results>
  <results type="news">39</results>
  <totalResults>148</totalResults>
  <movie code="84904">
     ...
  </movie>
  ...
  <tvseries code="513">
    <originalTitle>Weeds</originalTitle>
    <title>Weeds</title>
    <castingShort>
      <creators>Jenji Kohan</creators>
      <actors>Mary-Louise Parker, Justin Kirk, Kevin Nealon, Alexander Gould, Hunter Parrish</actors>
    </castingShort>
    <yearStart>2005</yearStart>
    <statistics>
      <userRating>3.67</userRating>
    </statistics>
    <poster href="http://images.allocine.fr/medias/nmedia/18/66/84/23/18961338.jpg"/>
    <linkList>
      <link rel="aco:web" href="http://www.allocine.fr/series/ficheseriee_gen_cserie=513.html"/>
    </linkList>
  </tvseries>
  ...
</feed>



J'ai essayé de récupérer ce code en passant par l'affichage dans un WebBrowser puis récupération du code source mais cela n'est pas possible, l'erreur suivante s'affiche :

Code

Me.WB_NAVIGATEUR.Navigate("http://api.allocine.fr/xml/search?q=weeds&partner=8")
TXT_CODE_SOURCE.Text = WB_NAVIGATEUR.Document.Body.InnerHtml()


Erreur :

Citation


La page XML ne peut pas être affichée
Impossible d'afficher l'entrée XML en utilisant la feuille de style . Corrigez l'erreur, puis cliquez sur le bouton Actualiser ou réessayez ultérieurement.
--------------------------------------------------------------------------------
Le passage du codage actuel au codage spécifié n'est pas pris en charge. Erreur de traitement de la ressource http://api.al...



J'ai donc essayé par la suite de l'ouvrir comme un fichier XML, mais encore une erreur survient :

Code :

Dim XmlDoc As XmlDocument = New XmlDocument()
        XmlDoc.Load("http://api.allocine.fr/xml/search?q=" & Me.TXT_ADRESSE.Text & "&partner=8")

        Dim element As XmlNodeList
        element = XmlDoc.DocumentElement.GetElementsByTagName("FEED")

        Dim maSerie, TitreSerie As String
        Dim noeud, noeudEnf As XmlNode
        For Each noeud In element
            For Each noeudEnf In noeud.ChildNodes

               If noeudEnf.LocalName = "tvseries" Then
                    maSerie = noeudEnf.InnerText
                Else
                    If (noeudEnf.LocalName = "originalTitle") Then
                        TitreSerie = noeudEnf.InnerText
                    End If
                End If
                MsgBox(maSerie & " à " & TitreSerie)
            Next
        Next


Erreur :

Citation


Marque d'ordre d'octet Unicode manquante. Impossible de basculer en Unicode.




Je souhaiterais savoir si vous aviez une solution ?
  • Partager sur Facebook
  • Partager sur Twitter
27 avril 2011 à 11:42:38

Il me semble que tu peux passer par une HTTPWebRequest à laquelle tu fourni l'URL à récupérer et via la méthode GetResponse() tu obtiens une HTTPWebResponse qui peux alors te fournir un Stream contenant la "réponse" de ta page, que tu peux ensuite charger dans ton XmlDocument.
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
27 avril 2011 à 11:54:19

Dim client As New WebClient()
Dim doc As New XmlDocument()
Dim response As String = Encoding.UTF8.GetString(client.DownloadData("http://api.allocine.fr/xml/search?q=weeds&partner=8"))
doc.LoadXml(response)

Je suis nul en VB.NET, j'espère que ça marche. C'est une adaptation d'un code que j'avais écrit en C# pour un notifier GMail.
Note que selon ce que tu veux faire un XDocument est peut-être plus approprié.
  • Partager sur Facebook
  • Partager sur Twitter
27 avril 2011 à 18:02:29

Merci pour vos réponses !
J'ai directement essayé la solution de Aethec et c'est nickel, c'est exactement ce que je désirais. ;)
  • Partager sur Facebook
  • Partager sur Twitter