[RESOLU] array_slice() sur un xml, marche pas...

Eléphanteau du PHP | 48 Messages

22 juil. 2015, 15:32

Salut,

Je viens de découvrir ce forum qui j'espère m'aidera et sur lequel j'espère aussi apporter de l'aide.

Aujourd'hui ce qui me pose problème c'est un XML que je veux traiter mais qui est trop gros, donc je souhaite traiter qu'une partie (les 10 premières lignes par exemple).

Voici ce que je fais :

Code : Tout sélectionner

$xml = simplexml_load_file('monfichier.xml'); print_r(array_slice($xml, 0, 10));
Mais ça ne marche pas...

UN avis ?

Merci :)

Mammouth du PHP | 688 Messages

22 juil. 2015, 15:47

c'est http://php.net/manual/fr/function.file.php qui retourne un tableau.

Eléphanteau du PHP | 48 Messages

22 juil. 2015, 15:53

Merci pour ta réponse,

mais en fait avec simplexml_load_file(), j'ai bien les éléments comme il me faut :

Code : Tout sélectionner

SimpleXMLElement Object ( [url] => Array ( [0] => SimpleXMLElement Object ( [loc] => http://www.site.com/ [priority] => 1.0 [lastmod] => 2015-06-15 [changefreq] => daily ) [1] => SimpleXMLElement Object ( [loc] => http://www.site.com/page1.html [priority] => 0.6 [lastmod] => 2015-05-22 [changefreq] => weekly ) [2] => SimpleXMLElement Object ( [loc] => http://www.site.com/page2.html [priority] => 0.7 [lastmod] => 2014-01-27 [changefreq] => weekly ) ...
Et je veux uniquement du 1 au 10.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

22 juil. 2015, 17:45

Bonjour et bienvenue sur PHPfrance !

Ton problème vient du fait que simplexml_load_file() renvoie un objet et non un tableau et donc tu ne peux pas lui appliquer array_slice()

La solution est de transformer cet objet en tableau, voilà ce que ça donnerai :
$xml = simplexml_load_file('monfichier.xml');
$tablo_xml=json_decode(json_encode($xml),1);
var_dump(array_slice($tablo_xml['url'], 0, 10));
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 48 Messages

22 juil. 2015, 19:44

Super, merci beaucoup c'est parfait !