Traitement d'un fichier XML
Résolu
zeitoun69
Messages postés
59
Statut
Membre
-
zeitoun69 Messages postés 59 Statut Membre -
zeitoun69 Messages postés 59 Statut Membre -
Bonjour,
quelqu'un aurait il une idée a me soumettre afin de transformer un fichier XML de la forme :
<ite
<date_in>07-10-01</date_in>
<type_id>1</type_id>
<nights>1</nights>
</item>
−
<item>
<date_in>07-10-02</date_in>
<type_id>1</type_id>
<nights>1</nights>
</item>
−
<item>
<date_in>07-10-03</date_in>
<type_id>1</type_id>
<nights>1</nights>
</item>
en liste de dates de type (07/10/01, 07/10/02,07/10/03)
Par avance merci
quelqu'un aurait il une idée a me soumettre afin de transformer un fichier XML de la forme :
<ite
<date_in>07-10-01</date_in>
<type_id>1</type_id>
<nights>1</nights>
</item>
−
<item>
<date_in>07-10-02</date_in>
<type_id>1</type_id>
<nights>1</nights>
</item>
−
<item>
<date_in>07-10-03</date_in>
<type_id>1</type_id>
<nights>1</nights>
</item>
en liste de dates de type (07/10/01, 07/10/02,07/10/03)
Par avance merci
A voir également:
- Traitement d'un fichier XML
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Fichier .dat - Guide
7 réponses
bonjour zeitoun !
je ne suis pas une pro, mais en utilisant les expressions régulières et php c'est possible :
<?php
//récupération du contenu de ton fichier xml.
$contenu=file_get_contents("tonfichierxml.xml");
// tu remplaces les tirets par un slash
$format_date=preg_replace("/-/","/",$contenu);
//et tu récupère le contenu des balises date_in sous forme d'un tableau
preg_match_all("|<date_in>(.*)</date_in>|U", $format_date, $date_in);
//tu comptes le nbre de résultats...
$res=count($date_in[0]);
//tu commences l'affichage
echo '(';
//puis tu fais une boucle
for ($i=0; $i<$res; $i++) {
//condition pour que le dernier membre de la boucle ne soit pas suivi d'une virgule
if ($i<($res-1)) {
echo $date_in[0][$i].', ';
}
else echo $date_in[0][$i].')';
}
?>
voila donc une proposition... mais tu peux faire autrement en utilisant je crois une feuille xslt.
a+
je ne suis pas une pro, mais en utilisant les expressions régulières et php c'est possible :
<?php
//récupération du contenu de ton fichier xml.
$contenu=file_get_contents("tonfichierxml.xml");
// tu remplaces les tirets par un slash
$format_date=preg_replace("/-/","/",$contenu);
//et tu récupère le contenu des balises date_in sous forme d'un tableau
preg_match_all("|<date_in>(.*)</date_in>|U", $format_date, $date_in);
//tu comptes le nbre de résultats...
$res=count($date_in[0]);
//tu commences l'affichage
echo '(';
//puis tu fais une boucle
for ($i=0; $i<$res; $i++) {
//condition pour que le dernier membre de la boucle ne soit pas suivi d'une virgule
if ($i<($res-1)) {
echo $date_in[0][$i].', ';
}
else echo $date_in[0][$i].')';
}
?>
voila donc une proposition... mais tu peux faire autrement en utilisant je crois une feuille xslt.
a+
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour et merci beaucoup, je debute et je ne connais pas biens les instructions
J'ai encore un souci
je dois inclure la liste des resultats dans un script java
Dans un calendrier Yahoo en fait
.. mais le script PHP me donne le resultat suivant si je l'insere directement
07/10/01</date_in>, <date_in>07/10/02</date_in>, <date_in>07/10/03</date_in>,
Quelle est la solution pour que la liste s'affiche correctement? ou pour inclure le resultat dans un script java
merci
J'ai encore un souci
je dois inclure la liste des resultats dans un script java
Dans un calendrier Yahoo en fait
.. mais le script PHP me donne le resultat suivant si je l'insere directement
07/10/01</date_in>, <date_in>07/10/02</date_in>, <date_in>07/10/03</date_in>,
Quelle est la solution pour que la liste s'affiche correctement? ou pour inclure le resultat dans un script java
merci
En fait ton code est bien en affichage mais en code source il contient encore les balises <date_in> et </date_in> comment faire pour les supprimer?
Merci
Merci
j'ai trouvé une solution
c'est de remplacer
preg_match_all("|<date_in>(.*)</date_in>|U", $format_date, $date_in);
par
$motif='`(../../..)+`';
preg_match_all($motif,$format_date,$date_in);
et au final mes dates devraient etre de la forme 19/10/2007 .. je vais donc chercher des scripts pour les modifier
merci pour votre aide
c'est de remplacer
preg_match_all("|<date_in>(.*)</date_in>|U", $format_date, $date_in);
par
$motif='`(../../..)+`';
preg_match_all($motif,$format_date,$date_in);
et au final mes dates devraient etre de la forme 19/10/2007 .. je vais donc chercher des scripts pour les modifier
merci pour votre aide