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

Avatar de l’utilisateur
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 | 674 Messages

22 juil. 2015, 15:47

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

Avatar de l’utilisateur
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 de l’utilisateur
Administrateur PHPfrance
Administrateur PHPfrance | 7120 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...

Avatar de l’utilisateur
Eléphanteau du PHP | 48 Messages

22 juil. 2015, 19:44

Super, merci beaucoup c'est parfait !