Parser un XML
Résolu
powpowland
Messages postés
395
Date d'inscription
Statut
Membre
Dernière intervention
-
le_joker_fou Messages postés 765 Date d'inscription Statut Membre Dernière intervention -
le_joker_fou Messages postés 765 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je suis à la recherche d'un parseur XML en PHP qui classe chaque balise dans un tableau...
en gros qu'il mette les contenus de TITLE dans un tableau, en gros qu'il mette les contenus de DESCRIPTION dans un tableau, etc...
j'ai bien cherché mais beaucoup ne faisait que de l'affichage pur, pas de classement ;
et ils avaient tous un problème majeur (dans la balise TITLE, un retour à la ligne dès le premier caractère spécial rencontré; dans le DESCRIPTION, retour à ligne impromptu au milieu de mots, de phrases... j'en passe et des meilleurs...)
en vous remerciant
je suis à la recherche d'un parseur XML en PHP qui classe chaque balise dans un tableau...
en gros qu'il mette les contenus de TITLE dans un tableau, en gros qu'il mette les contenus de DESCRIPTION dans un tableau, etc...
j'ai bien cherché mais beaucoup ne faisait que de l'affichage pur, pas de classement ;
et ils avaient tous un problème majeur (dans la balise TITLE, un retour à la ligne dès le premier caractère spécial rencontré; dans le DESCRIPTION, retour à ligne impromptu au milieu de mots, de phrases... j'en passe et des meilleurs...)
en vous remerciant
4 réponses
-
Salut,
utilise la fonction : simplexml-load-file
https://www.php.net/manual/fr/function.simplexml-load-file.php -
ok merci...
par contre comment on récupère les infos après ?
en gros mon XML ressemble à ça :
<?xml version="1.0" encoding="ISO-8859-1"?> <rss version="2.0"> <channel> <title>test</title> <link>test.com</link> <description>testetetststsufeg ugfu</description> <item> <title>TEST 01</title> <link>http://test.com/01</link> <guid isPermaLink='false'>0</guid> <description><![CDATA[un texte test 01]]></description> </item> </channel> </rss>
et le simplexml-load-file me retourne ça :
SimpleXMLElement Object ( [@attributes] => Array ( [version] => 2.0 ) [channel] => SimpleXMLElement Object ( [title] => test [link] => test.com [description] => testetetststsufeg ugfu [item] => SimpleXMLElement Object ( [title] => TEST 01 [link] => http://test.com/01 [guid] => 0 [description] => SimpleXMLElement Object ( ) ) ) )
-
c'est bon j'ai trouvé...
<?php if (file_exists('../fluxtest.xml')) { $xml = simplexml_load_file('../fluxtest.xml'); //print_r($xml); $num=0; foreach ($xml->channel->item as $value){ $num++; $title{$num} = $value->title; $link{$num} = $value->link; } for ( ; $num > 0; $num--){ echo $title{$num}."<br>".$link{$num}."<br>"; } } else { exit('Echec lors de l\'ouverture du fichier xml.'); } ?> -
Prenons le code suivant :
$xml = simplexml_load_file("mon flux"); $titre = $xml->channel->title; $link = $xml->channel->link; etc...