Parser et afficher flux xml

Vitaly58 Messages postés 43 Date d'inscription   Statut Membre Dernière intervention   -  
mpmp93 Messages postés 6648 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai un flux XML que je souhaite lire pour afficher les éléments sur mon site.

Le problème c'est que je ne connaît pas du tout le XML et en cherchant partout sur internet je n'ai pas trouver de réponse qui fonctionne.

Vous pourrez trouver le flux en question en cliquant sur le lien présent sur cette page :
http://www.annuaire-web-gratuit.nemesis-net.com/flux.html

Est-ce que quelqu'un sait comment faire pour afficher les éléments de ce flux sur une page PHP ?

Merci d'avance pour vos conseils.
A voir également:

1 réponse

mpmp93 Messages postés 6648 Date d'inscription   Statut Membre Dernière intervention   1 340
 
Bonjour,

Houlààà.....

Ce flux est très complexe.

Pour moi, la solution "la plus simple" est de passer par simpleXml sous PHP.

Exemple:
$flux = simplexml_load_file("http://....ici l'adresse web du flux...");


$flux est alors un objet hiérarchisé.

Pour explorer la hiérarchie:

echo $flux->CatalogListings->Offer->Title;


devrait afficher: CANON EOS 550D + 15-85 IS + 70-300 IS USM

Pour les fonctions de simpleXml tout est ici:
https://www.php.net/manual/fr/simplexml.examples.php

personnellement, je vois pas plus simple....
0
Vitaly58 Messages postés 43 Date d'inscription   Statut Membre Dernière intervention   19
 
Bonjour,

Merci pour la réponse rapide.

Donc quelque chose comme ceci devrait afficher CANON EOS 550D + 15-85 IS + 70-300 IS USM ??

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Document sans titre</title>
</head>

<body>
<?php
$flux = simplexml_load_file("http://....ici l'adresse web du flux...");


echo $flux->CatalogListings->Offer->Title;
?>
</body>
</html>


Je ne suis pas certain que ça fonctionne. Peut-être y a-t-il quelque chose que je ne fais pas correctement...

Bonne journée.
0
mpmp93 Messages postés 6648 Date d'inscription   Statut Membre Dernière intervention   1 340
 
Evidemment, si vous copiez/collez mon exemple, ça marchera pas.

ici:
http://....ici l'adresse web du flux...
à remplacer par l'adresse complète de votre flux XML source...

Utiliser print_r($flux) pour voir l'objet flux et sa construction...

Ensuite aller voir et comprendre la doc sur simpleXml.

Je vous donne une piste, à vous de vous "décarcasser" un chouille....

A+
0
Vitaly58 Messages postés 43 Date d'inscription   Statut Membre Dernière intervention   19
 
Oui, bien sur, je n'avais pas fait un copier coller...

J'ai réussi à afficher le flux comme ceci :
http://www.annuaire-web-gratuit.nemesis-net.com/testflux.php

Mais après, que faut-il faire pour récupérer les données et les mettre en forme ?

J'ai essayé echo $flux->CatalogListings->Offer->Title; mais ça ne fonctionne pas.

Merci
0
mpmp93 Messages postés 6648 Date d'inscription   Statut Membre Dernière intervention   1 340
 
c'est bien.

Vous voyez donc si vous passez en affichage comme ceci:

<pre>
<?php print_r($flux); ?>
</pre>


ce code:

[Offer] => Array


Offer est donc un sous-ensemble de CatalogListings, on y accède comme ceci:

$offers = $flux->catalogListings;


On accède à chaque élément de ce tableau de manière séquentielle comme ceci:

foreach($offers AS $key => $Offer) {
    print_r($Offer);  // pour voir ce que ça remonte si on a bien un contenu,
}


Si c'est OK, on a un objet, ce qui est indiqué ici:

[Offer] => Array
        (
            [0] => SimpleXMLElement Object


On accède donc ensuite à chaque sous-objet de $Offer appartenant à la classe simpleXml comme ceci:

foreach($offers AS $key => $Offer) {
    // print_r($Offer);  // pour voir ce que ça remonte si on a bien un contenu,
    echo $Offer->Title."<br/>\n";
}


Procéder également comme celà pour les autres lignes, exemple,

                    [Title] => CANON Reflex CANON EOS 550D + 18-135
                    [Description] => Résolution : 18,0 mégapixels-Objectif stabilisé : Oui-Ecran : 7,6 cm / Visée à l&#39;écran
                    [Images] => SimpleXMLElement Object
                        (
                            [Image] => SimpleXMLElement Object
                                (
                                    [Url] => http://r.kelkoo.com/r/fr/3504823/124901/90/90/http%3A%2F%2Fboulanger.scene7.com%2Fis%2Fimage%2FBoulanger%2F8714574550039_h_f_l_0/MuOKZLhFOhvIX4KZ.6QYAntZBlt.m4rer2oSyJVvLR8-
                                    [Height] => 90
                                    [Width] => 90
                                )


Pour la description, ce sera:

echo $Offer->description;


Pour l'URL d'une image:

echo $Offer->Images->Image->Url;


Pour l'affecter à une variable au lieu de l'afficher:

$urlImage = (string)$Offer->Images->Image->Url;


On force le transtypage...

Vous avez suivi?

A vous de jouer.

A+
0