
Lecture d'un fichier XML avec un parseur
Information sur le code source PHP
Codes en PHP de l'auteur :
[57] sources
Voir
Enregistrement le 03 Juin 2006 - Vu 31093 fois
Information sur le code source
Code simple qui vous aidera à la lecture d'un fichier XML. Vous y trouverez un exemple réduit d'un fichier XML, le parseur qui sert à lire le fichier XML placé sur le serveur, et pour terminer l'apel de la fonction avec l'affichage des données du fichier XML.
Si vous désirez limiter l'entrée du flux
remplacez la ligne suivante (ligne 48)
for($i=1;$i < sizeof($tmp)-1;$i+=2)
par ces 2 lignes avec $nb qui est le nombre de champs à afficher. Attention la valeur doit etre obligatoirement impaire car le pas est de 2 et commence à 1 (1,3,5,7,9,11...)
$nb = 15; // la valeur doit etre impaire
for($i=1;$i<$nb;$i+=2)
Code Source
.01
.02
.03
.04
.05
.06
.07
.08
.09
.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
.44
.45
.46
.47
.48
.49
.50
.51
.52
.53
.54
.55
.56
.57
.58
.59
.60
.61
.62
.63
.64
.65
.66
.67
.68
.69
.70
.71
.72
.73
.74
.75
|
|
<?php
/******************************************************************************/
/* */
/* __ ____ */
/* ___ / / ___ / __/__ __ _____________ ___ */
/* / _ \/ _ \/ _ \_\ \/ _ \/ // / __/ __/ -_|_-< */
/* / .__/_//_/ .__/___/\___/\_,_/_/ \__/\__/___/ */
/* /_/ /_/ */
/* */
/* */
/******************************************************************************/
/* */
/* Titre : Lecture d'un fichier XML avec un parseur */
/* */
/* URL : http://www.phpsources.org/scripts172-PHP.htm */
/* Auteur : KOogar */
/* Date édition : 03 Juin 2006 */
/* Website auteur : http://www.phpsources.org */
/* */
/******************************************************************************/
// Partons d'un exemple simple et trés classique
// Imaginons 1 fichier XML avec 2 éléments, 'id' et 'prenom'
// L'item principal est 'profil'
/*
<?xml version="1.0" encoding="ISO-8859-1" ?>
- <XML_EXEMPLE>
- <profil>
<id>200</id>
<prenom>Koogi</prenom>
</profil>
</XML_EXEMPLE>
*/
// FONCTION qui va lire le fichier XML et le placer dans un tableau
// Cette fonction sert de parseur
function lit_xml($fichier,$item,$champs) {
// on lit le fichier
if($chaine = @implode("",@file($fichier))) {
// on explode sur <item>
// Dans l'exemple il s'agit de 'profil'
$tmp = preg_split("/<\/?".$item.">/",$chaine);
// pour chaque <item> donc tous les profils
for($i=1;$i<sizeof($tmp)-1;$i+=2)
// on lit les champs demandés <champ> donc il s'agit de 'id' et 'prenom'
foreach($champs as $champ) {
$tmp2 = preg_split("/<\/?".$champ.">/",$tmp[$i]);
// on ajoute l'élément au tableau
$tmp3[$i-1][] = @$tmp2[1];
}
// et on retourne le tableau dans la fonction
return $tmp3;
}
}
// Lecture du FLUX XML sur le serveur
$xml = lit_xml("http://www.site.com/flux.xml","profil",array("id","prenom"));
// Une petite boucle suffit pour retrouver les élément du tableau
// retourné dans la fonction lit_xml()
foreach($xml as $row) {
echo $row[0];
// affiche 200
echo $row[1];
// affiche Koogi
}
// Et voilà ;)
?>
|
Fonctions du code source
Fonctions php / mysql PHP
- file : Lit le fichier et renvoie le résultat dans un tableau - (PHP 4, PHP 5)
- implode : Rassemble les éléments d'un tableau en une chaîne - (PHP 4, PHP 5)
- preg_split : Éclate une chaîne par expression rationnelle - (PHP 4, PHP 5)
- sizeof : Alias de count() - (PHP 4, PHP 5)
- array : Crée un tableau - (PHP 4, PHP 5)
- echo : Affiche une chaîne de caractères - (PHP 4, PHP 5)
|
|
le 18 Déc 2007 à 18:31:00
|
Merci beaucoup ca me sert bien ce ptit bout de code, par contre comment faire lorsque le xml contient un champ
|
|
le 18 Déc 2007 à 18:31:00
|
un champ < ! [ CDATA[ 194AUT]] >
|
|
le 20 Mars 2008 à 13:39:00
|
j'aimerai bein voir un exemple où il y a xml ,mysql ,javascipt
merci becoup
à me répondre
|
|
le 21 Mars 2008 à 00:55:00
|
Bonjour,
Comment extraire d'un fichier XML une balise du type :
la valeur de viewCount et url de media:thumbnail ?
'channel'
'item'
'media:group'
'media:thumbnail url='http://img/1.jpg/'
'/media:group'
media:statistics viewCount='3507548'
'/item'
'/channel'
ps : pour voir le code j'ai indique des ' a la place des < et >
|
|
le 21 Mars 2008 à 04:43:00
|
O , je saute sur l'occasion pour ajouter du BBcode aux commentaires

C'est plus jolie la vie en BBcode!
| Code: |
<channel>
<item>
<media:group>
|
Tu as une adresse de ton flux, ou tu peux mettre un peu plus de code pour voir le type de flux ?
Pour la lecture des flux RDF il faut utiliser un parseur différent:
http://www.phpsources.org/article-07,02,11,Lau@-PHP-27.htm
|
|
le 21 Mars 2008 à 10:40:00
|
Cool!
Pour ce qui concerne un flux
je te propose par exemple le flux de youtube:
rss : http://gdata.youtube.com/feeds/videos?format=5&orderby=viewCount&alt=rss&vq=%20mondotek%20%20%20Alive
|
|
le 13 Avril 2008 à 11:43:00
|
Salut KOogar,
J'aimerai pouvoir enregistrer dans une base de données Mysql : "ID" et "prenom".
Que faut-il rajouter en code après ton script ?
je découvre le PHP Mysql et j'avoue être un peu perdu.
Merci si tu me viens en aide.
Lionel
|
|
le 13 Avril 2008 à 11:49:00
|
Salut KOogar,
J'aimerai pouvoir enregistrer dans une base de données Mysql : "ID" et "prenom".
Que faut-il rajouter en code après ton script ?
je découvre le PHP Mysql et j'avoue être un peu perdu.
Merci si tu me viens en aide.
Lionel
|
|
le 26 Aout 2008 à 16:57:00
|
bonjour,
félicitation pour ces bouts de codes.
je souhaite savoir comment limiter le nombre de résultats renvoyés par le fichier rss qui contient les infos ?
merci
|
|
le 28 Aout 2008 à 16:06:00
|
c'est un très bon article mais est ce qu'on peut enregistrer des information a partir de mysql ?
Merci
|
|
le 28 Aout 2008 à 16:06:00
|
c'est un très bon article mais est ce qu'on peut enregistrer des information a partir de mysql ?
Merci
|
|
le 03 Déc 2008 à 00:31:00
|
salut, j'ai une anime de diapo en flash qui appel un fichier .xml ou ou ce trouve les urls des images.
Le problème c'est que j'ai mes url dans une une base sql, donc comment indiquer la variable php $url(qui contient l'url de l'image récuper dans ma base) dans mon fichier .xml?
merci
|
|
le 03 Déc 2008 à 01:05:00
|
Si vos données proviennent d'un table sql, il vous faut faire une lecture de la table pour en ressortir les valeurs que vous désirez travailler.
Ce script php devrait vous y aider:
| Code: |
<?php
/********************************/
/* */
/* CONNECTION - EXECUTION */
/* */
/********************************/
$mabasededonnee="nombase";
$connection = mysql_connect("localhost","root","motdepasse");
// test la connection if ( ! $connection )
die ("connection impossible");
// Connecte la base mysql_select_db($mabasededonnee) or die ("pas de connection");
$requete=" SELECT * from VOTRETABLE WHERE champ='valeur' "; // requête mysql_query($requete,$connection); // envoi de la requête
?>
|
|
|
le 19 Déc 2008 à 14:38:00
|
Je n'arrive pas ç afficher les champs contenu dans les cdata, comment faire please???
|
|
le 08 Fév 2009 à 02:11:00
|
Bonjour,
Je cherche comme oobox à lire (en php4) un rss youtube mais je n'y arrive pas.
l'exemple de code est ok pour lire les valeus simples mais impossible de lire les balises media du flux : as-tu trouvé comment faire ?
Offres d'emploi
Librairie
Langages de programmation
La librairie est ouverte à tous et elle est accès principalement sur les langages PHP et MySQL.
Vous trouverez aussi d'autres langages de programmation tel que le CSS, HTML, AJAX, ASP..
Plus de 300 références facilement accessibles. Visiter