Parser et mettre en page php un gros flux xml
14 messages • Page 1 sur 1
Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics
Parser et mettre en page php un gros flux xml
Bonsoir à tous,
et bonne année à toute l’équipe de WRI et les Wrinautes
Je suis depuis plus d'une semaine à la recherche d'info pour parser et mettre en page un gros fichier xml et j'avoue que j'ai le cerveau en bouillie (completement novice dans ce langage).
J'ai fait toutes sortes d'essais mais en vain (magierss ne donne rien). J'en suis à tel point que je ne sais plus quoi, comment ni où (tellement j'ai lu et essayé des trucs que je ne sais pas faire fonctionner)
Si quelqu'un peut m'aider s'il vous plaît (la version php du serveur est la 4.4.4)
Et la structure du xml est :
Pour ou commencer ? A quoi doit ressembler la structure de la page ? Si vous pouviez m'aider en me montrant le chemin s'il vous plaît ?
bibou
[Edit HawkEye: ajouté [ code] et [ /code]... c'est plus lisible
]
et bonne année à toute l’équipe de WRI et les Wrinautes
Je suis depuis plus d'une semaine à la recherche d'info pour parser et mettre en page un gros fichier xml et j'avoue que j'ai le cerveau en bouillie (completement novice dans ce langage).
J'ai fait toutes sortes d'essais mais en vain (magierss ne donne rien). J'en suis à tel point que je ne sais plus quoi, comment ni où (tellement j'ai lu et essayé des trucs que je ne sais pas faire fonctionner)
Si quelqu'un peut m'aider s'il vous plaît (la version php du serveur est la 4.4.4)
Et la structure du xml est :
- Code: Tout sélectionner
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
</products><product>
<id></id>
<name></name>
<manufacturer></manufacturer>
<description></description>
<category></category>
<number-of-retailers></number-of-retailers>
<image-url width="1024" height="768"></image-url>
<image-url width="1024" height="768"></image-url>
<category-url></category-url>
<prices-url></prices-url>
<details-url></details-url>
<reviews-url></reviews-url>
<expertreviews-url></expertreviews-url>
<rating type="professional">
<average></average>
<num-ratings></num-ratings>
</rating>
<lowest-price currency="EUR"></lowest-price>
<retailer>
<name></name>
<info-url></info-url>
<link></link>
<logo height="50" width="69"></logo>
<lead-time></lead-time>
<price currency="EUR"></price>
<source-type></source-type>
<source-date></source-date>
<price-with-shipping-min currency="EUR"></price-with-shipping-min>
<price-with-shipping-max currency="EUR"></price-with-shipping-max>
</retailer>
<retailer>
<name></name>
<info-url></info-url>
<link></link>
<logo height="28" width="150"></logo>
<lead-time></lead-time>
<price currency="EUR"></price>
<source-type></source-type>
<source-date></source-date>
<price-with-shipping-min currency="EUR"></price-with-shipping-min>
<price-with-shipping-max currency="EUR"></price-with-shipping-max>
</retailer>
</product>
</products>
Pour ou commencer ? A quoi doit ressembler la structure de la page ? Si vous pouviez m'aider en me montrant le chemin s'il vous plaît ?
bibou
[Edit HawkEye: ajouté [ code] et [ /code]... c'est plus lisible
Bonjour,
Je te conseille personnellement de passer par une solution comme magpierss. Cette librairie open source permet de parser un fichier xml et utilise un système de cache. après tu n'as qu'une fonction a appeler (et modifier) pour parser et afficher (ou encore stocker) ton fichier/flux XML.
fais une recherche google, sur magpierss tu devrais trouver ton bonheur
Je te conseille personnellement de passer par une solution comme magpierss. Cette librairie open source permet de parser un fichier xml et utilise un système de cache. après tu n'as qu'une fonction a appeler (et modifier) pour parser et afficher (ou encore stocker) ton fichier/flux XML.
fais une recherche google, sur magpierss tu devrais trouver ton bonheur
Bonjour athoms et merci de ta réponse
En fait j'ai testé magpierss et ça marche pour le flux RSS de WRI mais pour mon fichier xml rien
J'ai bien compris qu'il fallait adapter le fichier nommé feedparser.php dans le tuto de WRI et du dico du net mais je ne sais pas faire (et à force de chercher, je me suis complètement embrouillé)
J'ai lu aussi en fouillant sur le net qu'il pouvait y a avoir des bugs avec les fichiers inclus dans magpierss portant l'exention .inc et qu'il fallait les modifier en .inc.php (selon la version php du serveur)
Ce que j'ai fait et ça marche toujours avec le RSS de WRI mais pas avec mon flux XML.
Je vous assure, j'ai fouillé tout ce que l'on trouve sur ce sujet mais par où commencer ? certains parlent de DOM, SAX, XSL mais tout ça c’est du langage de programmeur et pour un novice
Quel est le chemin à suivre pour un débutant ? Y a t’il un bouquin du genre pour les nuls ? Ou quelqu’un peut me faire un devis de réalisation ?
Merci de votre aide s'il vous plaît
bibou
En fait j'ai testé magpierss et ça marche pour le flux RSS de WRI mais pour mon fichier xml rien
J'ai bien compris qu'il fallait adapter le fichier nommé feedparser.php dans le tuto de WRI et du dico du net mais je ne sais pas faire (et à force de chercher, je me suis complètement embrouillé)
J'ai lu aussi en fouillant sur le net qu'il pouvait y a avoir des bugs avec les fichiers inclus dans magpierss portant l'exention .inc et qu'il fallait les modifier en .inc.php (selon la version php du serveur)
Ce que j'ai fait et ça marche toujours avec le RSS de WRI mais pas avec mon flux XML.
Je vous assure, j'ai fouillé tout ce que l'on trouve sur ce sujet mais par où commencer ? certains parlent de DOM, SAX, XSL mais tout ça c’est du langage de programmeur et pour un novice
Quel est le chemin à suivre pour un débutant ? Y a t’il un bouquin du genre pour les nuls ? Ou quelqu’un peut me faire un devis de réalisation ?
Merci de votre aide s'il vous plaît
bibou
- DomicilePC
- WRInaute occasionnel

- Messages: 210
- Inscription: Lun Jan 17, 2005 15:50
Ca vient peut-être de la grandeur du fichier à parser (>4Mo).
Essaie d'en faire un plus petit (une dizaine de référence) et vois si ça fonctionne).
Si oui, il ne te reste plus qu'à faire plusieurs fichiers xml plus petits (<4Mo)
Essaie d'en faire un plus petit (une dizaine de référence) et vois si ça fonctionne).
Si oui, il ne te reste plus qu'à faire plusieurs fichiers xml plus petits (<4Mo)
A titre d'info, pour magpierss j'ai eu un petit soucis, de majuscule. j'ai installé la distrib courante sur mon pc windows, ça marchait bien mais en transferrant sous unix ça ne marchait plus. Simplement le Snoopy.inc.machin avait perdu sa majuscule. a verifier donc.
Tiens je te copie colle la solution proposée poar le site nord-cinema (tres bien fait ce site à tout point de vue) pour parser dux XmL sans magpierss.
Par contre pas de cache (:-() mais ça peut être la solution. Pour ton fichier xml, celui-ci n'est pas du rss, c'est pourquoi tu dois remplacer dans le code ci dessus pour gerer les emelents de ton flux.
Par exemple remplacer
par
En fait remplacer les balises par défaut du rss, par les balises de ton xml. C'est très simple : au lieu d'item, ton xml est structuré par products. remplacer donc items par products ainsi que les autres balises :
Voila ça devrait marcher. Tu englobes le tout dans une petite fonction, et le tour est joué
enfin j'espere pour toi.
voila
Tiens je te copie colle la solution proposée poar le site nord-cinema (tres bien fait ce site à tout point de vue) pour parser dux XmL sans magpierss.
- Code: Tout sélectionner
<!-- Exemple d'utilisation de l'uns de nos fils RSS pour afficher uniquement les titres des films de la semaine - Attention : Votre hébergeur doit supporter le PHP pour pouvoir utiliser ce code sur votre site-->
<?php
$site = "http://www.nord-cinema.com/rss.php";
$fp = @fopen($site,"r");
while(!feof($fp)) $raw .= @fgets($fp, 4096);
fclose($fp);
if( eregi("<item>(.*)</item>", $raw, $rawitems ) ) {
$items = explode("<item>", $rawitems[0]);
for( $i = 0; $i < count($items)-1; $i++ ) {
eregi("<title>(.*)</title>",$items[$i+1], $title );
eregi("<link>(.*)</link>",$items[$i+1], $url );
eregi("<description>(.*)</description>",$items[$i+1], $description);
echo "<li><a href='".$url[1]."' title='".$description[1]."'target=\"_blank_\">$title[1]</a></li>";
}
}
echo "<li><a href=\"http://www.nord-cinema.com\" title=\"Toutes les sorties cinéma cette semaine et à venir\" target=\"_blank_\">Toutes les sorties cinéma</a></li>";
?>
Par contre pas de cache (:-() mais ça peut être la solution. Pour ton fichier xml, celui-ci n'est pas du rss, c'est pourquoi tu dois remplacer dans le code ci dessus pour gerer les emelents de ton flux.
Par exemple remplacer
- Code: Tout sélectionner
eregi("<title>(.*)</title>",$items[$i+1], $title );
par
- Code: Tout sélectionner
eregi("<name>(.*)</name>",$items[$i+1], $name );
En fait remplacer les balises par défaut du rss, par les balises de ton xml. C'est très simple : au lieu d'item, ton xml est structuré par products. remplacer donc items par products ainsi que les autres balises :
- Code: Tout sélectionner
eregi("<name>(.*)</name>",$items[$i+1], $name );
eregi("<manufacturer->(.*)</manufacturer>",$items[$i+1], $name )
Voila ça devrait marcher. Tu englobes le tout dans une petite fonction, et le tour est joué
enfin j'espere pour toi.
voila
-

ecocentric - WRInaute accro

- Messages: 3577
- Inscription: Mar Fév 10, 2004 16:40
regarde pê simplexml en PHP5
euh, même pour un développeur, gérer du xml en php4, ça a toujours été une tannée... à tel point qu'on a organisé une migration sur un site du boulot (800k VU/mois, ça fait cher de l'heure de coupure) notamment pour arrêter avec ça. grosse galère.
en bref, si vraiment tu veux manipuler du xml, tourne-toi vers le php5: les différences ne sont pas énormes (si on utilise "basiquement"), et ta vie sera facilitée.
en bref, si vraiment tu veux manipuler du xml, tourne-toi vers le php5: les différences ne sont pas énormes (si on utilise "basiquement"), et ta vie sera facilitée.
php4 => www.simplepie.org est ton ami.
php5 => simplexml + eventuellement XML to Array (pour passer l'objet simplexml en array php classique)
php5 => simplexml + eventuellement XML to Array (pour passer l'objet simplexml en array php classique)
-

WebRankInfo - Administrateur du site

- Messages: 15883
- Inscription: Ven Avr 19, 2002 19:51
Merci Malaiac pour simplepie je ne connaissais pas et ça semble pas mal du tout
-

ecocentric - WRInaute accro

- Messages: 3577
- Inscription: Mar Fév 10, 2004 16:40
WebRankInfo a écrit:Merci Malaiac pour simplepie je ne connaissais pas et ça semble pas mal du tout
Après pas mal de tests, ça fonctionne bien mieux que Zend Feed (qui ne propose pas d'interface homogène pour l'accès aux propriétés des flux et semble bloquer sur les RDF) et même que MagpieRSS (qui semblerait plus sensible à la formation du flux).
Salut.
Ton fichier xml me semble mal formé de base, ca doit pas plaire au parseur :
</products><product>
Avoir un element fermé en racine ca craint un peu
pour le reste bin il te reste toujours la possibilité d'y appliquer un xslt
http://www.w3schools.com/xsl/xsl_intro.asp
(beaucoup plus simple qu'il n'y parait)
Courage ! le xml ca à l'air chiant mais une fois qu'on met un peu les mains dedans on fait des choses tres performantes tres vite ! =)
Ton fichier xml me semble mal formé de base, ca doit pas plaire au parseur :
</products><product>
Avoir un element fermé en racine ca craint un peu
pour le reste bin il te reste toujours la possibilité d'y appliquer un xslt
http://www.w3schools.com/xsl/xsl_intro.asp
(beaucoup plus simple qu'il n'y parait)
Courage ! le xml ca à l'air chiant mais une fois qu'on met un peu les mains dedans on fait des choses tres performantes tres vite ! =)
14 messages • Page 1 sur 1
Formation recommandée sur ce thème :
Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- Un (RSS) pour tous (les blogs officiels de Google)
- Google Enterprise a son blog
- Intégrer facilement un flux RSS externe
- Annuaire WRI : intégration des flux XML des inscrits
- Utiliser Actifpub pour l'intégration d'un flux RSS externe sur son site
- Le blog de Google Analytics
- Le blog officiel de Google Research
- Le blog officiel de Google au Japon
- Le blog officiel de Google Custom Search (CSE)
- Référencement vidéo sur Exalead
- problem pour parser un flux xml avec magpierss
- parser et sauver un flux XML dans une bdd > je sèche
- Parser xml php
- Parser XMl avec PHP 5
- parser un flux dotclear en php
- quelle librairie php pour valider un flux xml?
- Parser XML
- page basique en php / pour apeller un flux xml marche pas ;(
- Parser un xml simple
- Logiciel Parser de Xml
- parser un document xml
- Parser un xml ( durée du traitement )
- probleme pour parser du xml
- Difficulté à parser du XML avec simpleXML()
- Parser un xml voluminueux sur plusieurs pages ?
Consultez la description détaillée des produits ou services de Google suivants : API Google Checkout
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités





le forum