Parser un XML [Résolu/Fermé]

Signaler
Messages postés
394
Date d'inscription
lundi 3 mars 2008
Statut
Membre
Dernière intervention
19 mai 2014
-
Messages postés
764
Date d'inscription
mercredi 5 août 2009
Statut
Membre
Dernière intervention
7 août 2014
-
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

4 réponses

Messages postés
764
Date d'inscription
mercredi 5 août 2009
Statut
Membre
Dernière intervention
7 août 2014
232
Salut,

utilise la fonction : simplexml-load-file

https://www.php.net/manual/fr/function.simplexml-load-file.php
Messages postés
394
Date d'inscription
lundi 3 mars 2008
Statut
Membre
Dernière intervention
19 mai 2014
20
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 ( ) ) ) ) 
Messages postés
394
Date d'inscription
lundi 3 mars 2008
Statut
Membre
Dernière intervention
19 mai 2014
20
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.');
}
?>
Messages postés
764
Date d'inscription
mercredi 5 août 2009
Statut
Membre
Dernière intervention
7 août 2014
232
Prenons le code suivant :

$xml = simplexml_load_file("mon flux");

$titre = $xml->channel->title;
$link = $xml->channel->link;
etc...