Nous sommes actuellement le 29 Juil 2010, 23:02




Publier un nouveau sujet Répondre au sujet  [ 5 messages ] 
API : données XML, comment les exploiter ? 
Auteur Message
Avatar de l’utilisateur

Inscrit le: 30 Jan 2009, 13:12
Messages: 36
Localisation: Nîmes, Gard, France
Message API : données XML, comment les exploiter ?
Bonjour à tous :) !

Je cherche à exploiter les données d'un fichier XML avec PHP car je travail sur une API. J'ai de bonnes bases en PHP mais la gestion du XML c'est une première pour moi, j'ai donc fait des recherches mais je n'ai trouvé principalement que des explications magistrales et pas très claires pour tout dire (du moins par rapport à mes besoins).
Bref je penses que vous allez pouvoir m'aider ou tout au moins me conseiller des guides appropriés.

Je penses que c'est plus simple si pour commencer vous voyez le fichier XML sur lequel je travail :

Code:
<streams>
<stream>
<subcategory>social</subcategory>
<featured>False</featured>
<video_bitrate>123.5703125</video_bitrate>
<channel>
  <category>social</category>
  <id>8404457</id>
  <login>mokouliszt</login>
  <subcategory>social</subcategory>
  <title>mokouliszt</title>
  <status nil="true"></status>
  <tags nil="true"></tags>
  <producer>false</producer>
  <category_title>Social</category_title>
  <subcategory_title>Social</subcategory_title>
  <embed_enabled>true</embed_enabled>
  <views_count>140157</views_count>
</channel>
<updated_on>Fri Jan  8 06:13:50 2010</updated_on>
</stream>

... etc
</streams>


Je veux générer un menu déroulant avec ceci :

Code:
<?php
        $dom = new DomDocument;
        $dom->load("list.xml");
        $listechaines = $dom->getElementsByTagName('login');
       
        foreach($listechaines as $chaine){
       
        $chainemenu = $chaine->firstChild->nodeValue;
       
        echo "<option value=\"player.php?channel=".$chainemenu."\" dir=\"ltr\">".$chainemenu."</option>";
        }
?>


J'y affiche le "login" de la chaîne avec $chainemenu mais je voudrais aussi afficher la sous-catégorie <subcategory_title>. Comment faire ? Si j'appel le fichier XML en précisant le login dans la boucle il ne s'exécute qu'une dizaine de fois puis bloque (normal, il détecte qu'il est dans une boucle !).

Merci d'avance pour vos conseils.

_________________
CC30 - CC30 Network


16 Jan 2010, 14:55
Profil Site Internet
Administrateur
Avatar de l’utilisateur

Inscrit le: 29 Jan 2009, 14:45
Messages: 453
Message Re: API : données XML, comment les exploiter ?
Bonjour,

tu peux éventuellement faire quelque chose comme ceci :

Code:
   $list = file_get_contents("list.xml");
   $xml_list = simplexml_load_string($list);

   foreach($xml_list as $stream)
   {
      $login = $stream->channel->login;
      $subcategory_title = $stream->channel->subcategory_title;
   }


Tu as ainsi les deux variables (login & subcategory_title) pour chacun de tes <stream>

Ne sachant pas ce que tu souhaites faire du subcategory, je te laisse le soin de finir cette ébauche ^^


16 Jan 2010, 17:19
Profil
Avatar de l’utilisateur

Inscrit le: 30 Jan 2009, 13:12
Messages: 36
Localisation: Nîmes, Gard, France
Message Re: API : données XML, comment les exploiter ?
Merci wouap, ta solution fonctionne très bien ! ;)

Autre question dans la foulée et après ça devrait être bon :P , je ne trouve pas comment faire pour sélectionner un bloc en particulier en choisissant une donnée présente dans ce bloc, exemple : comment exploiter spécifiquement les données dans <clip> ou la balise <id> à la valeur 2275716 ?
J'aimerais pouvoir sortir <description> et <image_url_huge>.

Code:
<clips>
  <clip>
    <category>social</category>
    <created_on>2009-11-11T07:35:38Z</created_on>
    <description>USA Hostel SF</description>
    <id>2275716</id>
    <length>8560</length>
    <start_time>2009-11-08T12:27:19Z</start_time>
    <subcategory nil="true"></subcategory>
    <tags>cc30 charles maxime maxime15</tags>
    <title>2009-11-8 Night (IR) - Part 2</title>
    <channel_id>44847</channel_id>
    <category_title>Social</category_title>
    <subcategory_title nil="true"></subcategory_title>
    <page_url>http://www.justin.tv/clip/99df89b4e4cc6ba7</page_url>
    <video_file_url>http://media.justin.tv/archives/2009-11-11/highlight_2275716.flv</video_file_url>
    <image_url_huge>http://s.justin.tv/jtv.thumbs/2275716-630x473.jpg</image_url_huge>
    <image_url_large>http://s.justin.tv/jtv.thumbs/2275716-320x240.jpg</image_url_large>
    <image_url_medium>http://s.justin.tv/jtv.thumbs/2275716-150x113.jpg</image_url_medium>
    <image_url_small>http://s.justin.tv/jtv.thumbs/2275716-70x53.jpg</image_url_small>
  </clip>
  <clip>
    <category>social</category>
    <created_on>2009-11-11T07:27:42Z</created_on>
    <description>Sleeping @ USA Hostel in SF</description>
    <id>2275708</id>
    <length>6293</length>
    <start_time>2009-11-08T08:27:21Z</start_time>
    <subcategory nil="true"></subcategory>
    <tags>cc30 charles maxime maxime15</tags>
    <title>2009-11-8 Night (IR) - Part 1</title>
    <channel_id>44847</channel_id>
    <category_title>Social</category_title>
    <subcategory_title nil="true"></subcategory_title>
    <page_url>http://www.justin.tv/clip/d84def8c5a6452dd</page_url>
    <video_file_url>http://media.justin.tv/archives/2009-11-11/highlight_2275708.flv</video_file_url>
    <image_url_huge>http://s.justin.tv/jtv.thumbs/2275708-630x473.jpg</image_url_huge>
    <image_url_large>http://s.justin.tv/jtv.thumbs/2275708-320x240.jpg</image_url_large>
    <image_url_medium>http://s.justin.tv/jtv.thumbs/2275708-150x113.jpg</image_url_medium>
    <image_url_small>http://s.justin.tv/jtv.thumbs/2275708-70x53.jpg</image_url_small>
  </clip>

etc...
</clips>


Merci d'avance.

_________________
CC30 - CC30 Network


16 Jan 2010, 19:45
Profil Site Internet
Administrateur
Avatar de l’utilisateur

Inscrit le: 29 Jan 2009, 14:45
Messages: 453
Message Re: API : données XML, comment les exploiter ?
en reprenant l'exemple du début, on peut faire quelque chose dans ce style :

Code:
   $list = file_get_contents("list.xml");
   $xml_list = simplexml_load_string($list);

   foreach($xml_list as $clip)
   {
      $id = $clip->id;

      if ($id == 2275716)
      {
         $description = $clip->description;
         $image_url_huge = $clip->image_url_huge;

         break;
      }
   }


19 Jan 2010, 11:14
Profil
Avatar de l’utilisateur

Inscrit le: 30 Jan 2009, 13:12
Messages: 36
Localisation: Nîmes, Gard, France
Message Re: API : données XML, comment les exploiter ?
Merci beaucoup pour ta précieuse aide wouap !

_________________
CC30 - CC30 Network


20 Jan 2010, 00:39
Profil Site Internet
Afficher les messages depuis:  Trier par  
Publier un nouveau sujet Répondre au sujet  [ 5 messages ] 


Qui est en ligne ?

Utilisateurs parcourant actuellement ce forum : Aucun utilisateur inscrit et 1 invité


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum

Rechercher pour:
Sauter vers:  
Powered by phpBB © phpBB Group.
Designed by Vjacheslav Trushkin for Free Forums/DivisionCore.
Translated by Xaphos © 2007, 2008, 2009 phpBB.fr
Hébergé sur un serveur dédié Nuxit