API : données XML, comment les exploiter ?

Questions commerciales
Avis, remarques, suggestions
Discussions diverses
Règles du forum
Ce forum vous permet d'échanger avec d'autres clients webmasters à propos de tous les sujets en rapport avec NUXIT

Si vous souhaitez être mis en relation directe avec l'équipe NUXIT, merci de bien vouloir utiliser la rubrique "Support" de votre Espace Client et d'utiliser le formulaire mis à votre disposition. Avant de poster votre message, prière de vérifier que la réponse ne se trouve pas déjà dans l'aide en ligne :

Aide en ligne /FAQ : http://aide.nuxit.com

API : données XML, comment les exploiter ?

Messagede Charles » 16 Jan 2010, 14:55

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: Tout sélectionner
<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: Tout sélectionner
<?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 Network (VDS Eco Platinum + Power Pack)
Client Nuxit depuis mars 2007
Avatar de l’utilisateur
Charles
 
Messages: 102
Inscription: 30 Jan 2009, 13:12
Localisation: Nîmes

Re: API : données XML, comment les exploiter ?

Messagede nuxitboy » 16 Jan 2010, 17:19

Bonjour,

tu peux éventuellement faire quelque chose comme ceci :

Code: Tout sélectionner
   $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 ^^
Avatar de l’utilisateur
nuxitboy
Administrateur
 
Messages: 576
Inscription: 29 Jan 2009, 14:45

Re: API : données XML, comment les exploiter ?

Messagede Charles » 16 Jan 2010, 19:45

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: Tout sélectionner
<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 Network (VDS Eco Platinum + Power Pack)
Client Nuxit depuis mars 2007
Avatar de l’utilisateur
Charles
 
Messages: 102
Inscription: 30 Jan 2009, 13:12
Localisation: Nîmes

Re: API : données XML, comment les exploiter ?

Messagede nuxitboy » 19 Jan 2010, 11:14

en reprenant l'exemple du début, on peut faire quelque chose dans ce style :

Code: Tout sélectionner
   $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;
      }
   }
Avatar de l’utilisateur
nuxitboy
Administrateur
 
Messages: 576
Inscription: 29 Jan 2009, 14:45

Re: API : données XML, comment les exploiter ?

Messagede Charles » 20 Jan 2010, 00:39

Merci beaucoup pour ta précieuse aide wouap !
CC30 Network (VDS Eco Platinum + Power Pack)
Client Nuxit depuis mars 2007
Avatar de l’utilisateur
Charles
 
Messages: 102
Inscription: 30 Jan 2009, 13:12
Localisation: Nîmes


Retourner vers Discussions Générales

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité