IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XML/XSL et SOAP Discussion :

extraction d'une donnée avec un parseur xml


Sujet :

XML/XSL et SOAP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Mai 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 7
    Par défaut extraction d'une donnée avec un parseur xml
    Bonjour a tous,

    Mon problème est le suivant. J'utilise un parseur xml avec la fonction lit_xml pour extraire les champ d'un flux rss mais je n arrive pas a extraire une image quand la donnee est sous la forme.
    <media:thumbnail url="http://urlimage" height="240" width="320" />

    Je vous mets l'example de mon parseur ci-dessous

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    <?
    // Lecture d'un fichier XML
    function lit_xml($fichier,$item,$champs) {
       // on lit le fichier
       if($chaine = @implode("",@file($fichier))) {
          // on explode sur <item>
          $tmp = preg_split("/<\/?".$item.">/",$chaine);
          // pour chaque <item>
          for($i=1;$i<sizeof($tmp)-1;$i+=2)
             // on lit les champs demandés <champ>
             foreach($champs as $champ) {
                $tmp2 = preg_split("/<\/?".$champ.">/",$tmp[$i]);
                // on ajoute au tableau
                $tmp3[$i-1][] = @$tmp2[1];
             }
          // et on retourne le tableau
          return $tmp3;
       }
    }
     
    // Exemple : title > 0 lien > 1 description > 2 date > 3 reference dvd > 4 reference video > 5 thumb_principale > 6
    $xml = lit_xml("http://www.dailymotion.com/rss/user/TvAzteca/1","item",array("title","link","description","media:thumbnail", "dm:id"));
    // et on affiche...
    echo "<?xml version='1.0' encoding='ISO-8859-15'?>
    <rss version='2.0'>
        <channel>  
            <title>Dayli TvAzteca</title>
            <link>http://www.TvAzteca.com</link>
            <description>Dayli TvAzteca</description> ";
    foreach($xml as $row) {
       echo "<item>"
          ."<title>".$row[0]."</title>"
    	  ."<link>".$row[1]."</link>"
    	  ."<description>".$row[2]."</description>"
    	  ."<enclosure url='".$row[3]."' length='50000' type='image/jpeg'"."/>"
    	  ."<guid>".$row[4]."</guid>"
          ."</item>";
    }
     
    echo "</channel>
    </rss>
    ";
    ?>
    Je bloque donc pour extraire par exemple http://ak2.static.dailymotion.com/st...20100327223757 du champ
    <media:thumbnail url="http://ak2.static.dailymotion.com/static/video/549/756/18657945:jpeg_preview_large.jpg?20100327223757" height="240" width="320" /> afin de recuperer l image distante.

    Auriez vous une solution?

    merci d'avance

  2. #2
    Membre Expert
    Avatar de polymorphisme
    Homme Profil pro
    Publishing
    Inscrit en
    Octobre 2009
    Messages
    1 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Publishing
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 1 460
    Par défaut
    Bonjour juliobarna,

    c'est un problème de PHP, pas de XML.

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Par défaut
    Hello,
    Tout d'abord tu n'utilises pas un parseur XML, tu utilises des expressions régulière pour lire un fichier XML. C'est raisonnable comme approche dans les cas où le xml est pas trop hierachique et que les recherches restent simples.
    Le code php que tu montres va juste lire le texte qu'il peut y avoir dans une sous balise de la balise "item".
    Hors là, du point de vu XML, tu cherches à récupérer la valeur de attribut "url" de l'élément thumbnail appartenant au namespace http://search.yahoo.com/mrss ayant comme prefixe "media".

    Et c'est bien différent, donc :
    Soit tu codes une nouvelle fonction php pour extraire l'attribut d'un élement.
    (Au passage, la fonction que tu nous montre relis tout le document à chaque extraction de texte d'un champ .)

    Soit utilise un parseur XML de php et tu t'appuies sur ses fonctions pour récupérer ce que tu veux :
    http://eusebius.developpez.com/php5dom/
    Et fait bien attention à la notion de namespace (les élements du type <prefixe:nom />).

Discussions similaires

  1. Alimenter une base de données avec des fichiers xml
    Par anaas dans le forum Administration
    Réponses: 2
    Dernier message: 16/07/2012, 11h02
  2. [XML] Modification d'une donnée d'un fichier XML
    Par mardachris dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 15/12/2006, 19h46
  3. Extraction d'une chaine avec séparateurs
    Par kaceo dans le forum Requêtes
    Réponses: 1
    Dernier message: 05/05/2006, 10h36
  4. extraction d'une donnée d'une chaine de caractères.
    Par LESOLEIL dans le forum Langage
    Réponses: 10
    Dernier message: 20/04/2006, 12h00
  5. Recupérer une donnée avec un WHERE concernant la date
    Par benlasavate dans le forum Access
    Réponses: 1
    Dernier message: 23/01/2006, 08h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo