parser un document xml
3 messages • Page 1 sur 1
Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics
parser un document xml
bjr a tous
voila je parse bien dans un document Xml yahoo, jusqu'a <summary> mais apres
<Thumbnail> et son contenu <Url><Height><Width>, je seche sur le
le bon codage pour parser cette partie et recuperer l'url, height, width dans un print, merci de vos conseils.
voila je parse bien dans un document Xml yahoo, jusqu'a <summary> mais apres
<Thumbnail> et son contenu <Url><Height><Width>, je seche sur le
le bon codage pour parser cette partie et recuperer l'url, height, width dans un print, merci de vos conseils.
- Code: Tout sélectionner
<?xml version="1.0" encoding="UTF-8" ?>
- <ResultSet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:yahoo:srchmi" ...>
- <Result>
<Title>madonna 116</Title>
<Summary>Picture 116 of 184</Summary>
- <Thumbnail>
<Url>http://scd.mm-b1.yimg.com/image/481989943</Url>
<Height>125</Height>
<Width>100</Width>
</Thumbnail>
</Result>
$p = xml_parser_create();
xml_parse_into_struct($p, $contents, $vals);
xml_parser_free($p);
$title = array();
$summary = array();
$TOTALRESULTSAVAILABLE = $vals[0]['attributes']['TOTALRESULTSAVAILABLE'];
$resultscount = 0;
for($i=0;isset($vals[$i]);$i++) {
if($vals[$i]['tag'] == 'TITLE') {
$title[] = $vals[$i]['value'];
$resultscount++;
} elseif($vals[$i]['tag'] == 'SUMMARY') {
$summary[] = $vals[$i]['value'];
}
}
print "<LI class=v>".$title[$i]."<br />";
print "<LI class=v>".$summary[$i]."<br />";
Dernière édition par dudo le Lun Oct 31, 2005 12:30, édité 1 fois.
- ChezThierry
- WRInaute impliqué

- Messages: 273
- Inscription: Ven Oct 21, 2005 13:33
Il me semble que ceci fonctionnera à la suite de ton test SUMMARY :
(y'a qu'a fait un print_r($vals) en fait pour voir le contenu de la variable.)
- Code: Tout sélectionner
elseif($vals[$i]['tag'] == 'URL') {
$url[] = $vals[$i]['value'];
} elseif($vals[$i]['tag'] == 'WIDTH') {
$width[] = $vals[$i]['value'];
} elseif($vals[$i]['tag'] == 'HEIGHT') {
$height[] = $vals[$i]['value'];
}
(y'a qu'a fait un print_r($vals) en fait pour voir le contenu de la variable.)
Même s'il est possible de faire le parsing à la main en PHP, personnellement je préconiserais l'utilisation de XSLT qui simplifie considérablement le codage :
- pas de parsing en PHP
- donc pas de boucle, tableaux de variable...
- plus de modularité
et moins de bugs ou de temps de mise au point à mon avis.
Voici le fichier PHP qui convient pour PHP 5 (ça marche aussi en PHP 4, mais les objets et méthodes sont légèrement différents). Il faut penser à activer l'extension --with-xsl.
- pas de parsing en PHP
- donc pas de boucle, tableaux de variable...
- plus de modularité
et moins de bugs ou de temps de mise au point à mon avis.
Voici le fichier PHP qui convient pour PHP 5 (ça marche aussi en PHP 4, mais les objets et méthodes sont légèrement différents). Il faut penser à activer l'extension --with-xsl.
- Code: Tout sélectionner
<?php
//données XML
$xml_file = '<?xml version="1.0" encoding="UTF-8" ?>
<Result>
<Title>madonna 116</Title>
<Summary>Picture 116 of 184</Summary>
<Thumbnail>
<Url>http://scd.mm-b1.yimg.com/image/481989943</Url>
<Height>125</Height>
<Width>100</Width>
</Thumbnail>
</Result>';
//Transformation XSL
$xsl_file = '<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration = "yes" />
<xsl:template match="/Result" >
<ul><li><xsl:value-of select="./Title"/></li>
<li><xsl:value-of select="./Summary"/>
<ul><xsl:apply-templates select="./Thumbnail/*"/></ul>
</li></ul>
</xsl:template>
<xsl:template match="Thumbnail/*"><li><xsl:value-of select="."/></li></xsl:template>
</xsl:stylesheet>';
// Application de la transformation
$DomXmlFile = DOMDocument::loadXML($xml_file); //création d'un objet pour les données XML
$DomXslTrans = DOMDocument::loadXML($xsl_file); //création d'un objet pour la transformation XSL
$proc = new XSLTProcessor; //création du processeur xslt
$proc->importStyleSheet($DomXslTrans); //le processeur xslt dispose de la transformation xslt
print $proc->transformToXML($DomXmlFile); // transformation XSLT+ affichage
?>
3 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 :
- Brevet de Google sur le contenu dupliqué
- Google dépose 2 brevets pour AdSense
- Google Enterprise a son blog
- Le blog de Google Analytics
- Le blog officiel de Google Research
- Un (RSS) pour tous (les blogs officiels de Google)
- Le blog officiel de Google au Japon
- Le blog officiel de Google Custom Search (CSE)
- Google Automat = Google Base + AdWords
- Google s'empare de Writely, un traitement de texte en ligne
- Parser XML
- Parser un xml simple
- Parser xml php
- Logiciel Parser de Xml
- Parser un xml ( durée du traitement )
- Parser XMl avec PHP 5
- probleme pour parser du xml
- Difficulté à parser du XML avec simpleXML()
- Parser un xml voluminueux sur plusieurs pages ?
- problem pour parser un flux xml avec magpierss
- Parser et mettre en page php un gros flux xml
- Parser XML balises sur plusieurs niveaux (API amazon)
- parser et sauver un flux XML dans une bdd > je sèche
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