Page 1 sur 1

array_slice() sur un xml, marche pas...

Posté : 22 juil. 2015, 15:32
par CoeurBis
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 :)

Re: array_slice() sur un xml, marche pas...

Posté : 22 juil. 2015, 15:47
par tof73
c'est http://php.net/manual/fr/function.file.php qui retourne un tableau.

Re: array_slice() sur un xml, marche pas...

Posté : 22 juil. 2015, 15:53
par CoeurBis
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.

Re: array_slice() sur un xml, marche pas...

Posté : 22 juil. 2015, 17:45
par @rthur
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));

Re: array_slice() sur un xml, marche pas...

Posté : 22 juil. 2015, 19:44
par CoeurBis
Super, merci beaucoup c'est parfait !