Page 1 sur 1

Parser du XML : fonction basique

Posté : 28 févr. 2010, 14:05
par supercanard
Bonjour,

Je sais qu'il existe dom ou simpleXml pour ça, mais j'avais envie de faire ma propre petite fonction permettant de retourner le contenu d'un fichier XML dans un tableau.
Ça peut paraitre un peu du bricolage, mais cette fonction ne servira qu'a lire des documents léger, pas des grosses bibliothèques.

Je voulais juste savoir si au niveau des performances ça ne serait pas minable avec l'utilisation des regex. je rappelle c'est important que je ne l'utiliserais pour lire de petits documents de quelques ko seulement...
<?php
function xml_vers_array($fichier, $item, $elements){
	$xml = file_get_contents($fichier);
	preg_match_all('#<'.$item.'>(.*)</'.$item.'>#Usi', $xml, $temp);
	$i = 0;
	foreach($temp[1] as $temp2){
		foreach($elements as $element){
			preg_match_all('#<'.$element.'>(.*)</'.$element.'>#Usi', $temp2, $temp3);
			$temp4[$i][$element] = $temp3[1][0];
		}
		$i++;
	}
	return $temp4;
}

$data = xml_vers_array('test.xml', 'item', array('element1', 'element2'));
print_r($data);
?>
Voici ce que donne le print_r() :

Code : Tout sélectionner

Array ( [0] => Array ( [element1] => 1 [element2] => Test 1 ) [1] => Array ( [element1] => 2 [element2] => Test 2 ) )
La source XML :

Code : Tout sélectionner

<?xml version="1.0" encoding="ISO-8859-1" ?> <liste> <item> <element1>1</element1> <element2>Test 1</element2> </item> <item> <element1>2</element1> <element2>Test 2</element2> </item> </liste>

Re: Parser du XML : fonction basique

Posté : 01 mars 2010, 08:53
par stopher
Slt ,

Si ta fonction fonctionne , pour des petits fichiers tu ne devrais pas voir la différence ...
Apres reste aussi à voir le nombre de petits fichiers à lire en une fois .

Cependant , ne pas utiliser SimpleXml pour ce genre d'opération me semble un peu du gachi , cette extension étant en standard et éprouvé depuis pas mal de temps maintenant .

Bonne continuation,
Ch.

Re: Parser du XML : fonction basique

Posté : 07 mars 2010, 23:33
par supercanard
Merci pour ta réponse.

Après quelques test de temps de lecture ça me semble suffisamment rapide, du moins pour l'utilisation que j'en fait

Re: Parser du XML : fonction basique

Posté : 08 mars 2010, 06:10
par niuxe
et l'eau
Slt ,

Si ta fonction fonctionne , pour des petits fichiers tu ne devrais pas voir la différence ...
Apres reste aussi à voir le nombre de petits fichiers à lire en une fois .

Cependant , ne pas utiliser SimpleXml pour ce genre d'opération me semble un peu du gachi , cette extension étant en standard et éprouvé depuis pas mal de temps maintenant .

Bonne continuation,
Ch.
+1. Je suis vraiment de ton avis stopher. En deux lignes de codes on arrive au but et surement plus rapide qu'une fonction « perso » avec RegEx vu que c'est du natif (en C si je ne m'abuse). Et pour finir, pourquoi réinventer l'eau chaude. Erf la roue c'est pompeux :p . En plus simplexml, c'est vraiment simple. je ne me souviens pas toujours comment fonctionne. Il suffit de regarder la doc et de suite ça revient. Bizarre j'arrive pas à imprimer ce truc dans mon HD interne. Alzheimer me guette 8-| .

Re: Parser du XML : fonction basique

Posté : 08 mars 2010, 12:27
par stealth35
il avait envie de faire son truc, je trouve que c'est un bon exercice :D