Page 1 sur 1
Concaténation contenu fichiers xml
Posté : 15 nov. 2010, 11:37
par FreeFight37
Bonjour à tous,
Je dois parcourir un répertoire qui contient n fichiers xml issus d'une autre application qui ne peut pas être modifié (prestataire extérieur qui demande beaucoup d'argent...). Cette application génére 2 fichiers xml par dossiers qu'elle traite. Ces deux fichiers xml (ils ont le même nom, seul le préfixe change l'un commence par un D, l'autre par un E) doivent-être réunis en un seul fichier xml. J'ai réussi lorsqu'il y que 2 fichiers à traiter. Mais le problème, c'est que je dois parcourir tout un répertoire qui contient n fichiers commençant par D et n fichiers commençant par E. Et là je bloque, je ne vois pas comment réunir mes deux fichiers xml issus du même dossier dans une telle arborescence. Auriez-vous une idée ? Merci.
@+ tard
Re: Concaténation contenu fichiers xml
Posté : 15 nov. 2010, 11:41
par stealth35
Hello, pour parcourir tes dossier tu peux utiliser FilesystemIterator, voir mettre un RegexIterator pour filter les noms de fichier, ensuite pour reunir les xml, simplexml fera l'affaire

Re: Concaténation contenu fichiers xml
Posté : 15 nov. 2010, 12:19
par FreeFight37
Hello, pour parcourir tes dossier tu peux utiliser FilesystemIterator, voir mettre un RegexIterator pour filter les noms de fichier, ensuite pour reunir les xml, simplexml fera l'affaire

Salut,
Merci pour la réponse, j'ai regardé ce qu'était FilesystemIterator et RegexIterator mais j'avoue que j'ai du mal à piger ! Surtout le Regexiterator, comment l'intégrer dans ce que je souhaite faire ? Aurais-tu un exemple pour m'aider à mieux comprendre s'il te plait ?
Merci pour ton retour.
@+ tard
Re: Concaténation contenu fichiers xml
Posté : 15 nov. 2010, 12:21
par stealth35
Hello, pour parcourir tes dossier tu peux utiliser FilesystemIterator, voir mettre un RegexIterator pour filter les noms de fichier, ensuite pour reunir les xml, simplexml fera l'affaire

Salut,
Merci pour la réponse, j'ai regardé ce qu'était FilesystemIterator et RegexIterator mais j'avoue que j'ai du mal à piger ! Surtout le Regexiterator, comment l'intégrer dans ce que je souhaite faire ? Aurais-tu un exemple pour m'aider à mieux comprendre s'il te plait ?
Merci pour ton retour.
@+ tard
pour lister tout tesfichier commencant par D ou E dans un dossier tu peux faire
$files = new RegexIterator(new DirectoryIterator('chemin/vers/le/dossier'), '/^[DE]/');
foreach($files as $file)
{
var_dump($file->getFilename());
}
edit : plutôt faire avec DirectoryIterator, le FilesystemIterator prend le realpath

Re: Concaténation contenu fichiers xml
Posté : 15 nov. 2010, 12:41
par FreeFight37
Hello, pour parcourir tes dossier tu peux utiliser FilesystemIterator, voir mettre un RegexIterator pour filter les noms de fichier, ensuite pour reunir les xml, simplexml fera l'affaire

Salut,
Merci pour la réponse, j'ai regardé ce qu'était FilesystemIterator et RegexIterator mais j'avoue que j'ai du mal à piger ! Surtout le Regexiterator, comment l'intégrer dans ce que je souhaite faire ? Aurais-tu un exemple pour m'aider à mieux comprendre s'il te plait ?
Merci pour ton retour.
@+ tard
pour lister tout tesfichier commencant par D ou E dans un dossier tu peux faire
$files = new RegexIterator(new DirectoryIterator('chemin/vers/le/dossier'), '/^[DE]/');
foreach($files as $file)
{
var_dump($file->getFilename());
}
edit : plutôt faire avec DirectoryIterator, le FilesystemIterator prend le realpath

Merci,
Mais j'obtiens ce message...
Fatal error: Class 'RegexIterator' not found in /var/www/html/test/concat_xml_ap/concat_xml_ap.php on line 44
Je suis désolé, j'ai l'impression d'être débile, mais je pige pas le truc avec "iterator"... je cherche !
@+ tard
Re: Concaténation contenu fichiers xml
Posté : 15 nov. 2010, 12:51
par stealth35
t'as quelle version de php ?
Re: Concaténation contenu fichiers xml
Posté : 15 nov. 2010, 13:20
par FreeFight37
t'as quelle version de php ?
Version 5.1.2.
Ce que je ne comprends pas c'est que ce code fonctionne :
foreach (new DirectoryIterator('.') as $fileInfo) {
if($fileInfo->isDot()) continue;
echo $fileInfo->getFilename() . "<br>\n";
}
Je liste bien tous les fichiers présent dans le répertoire...
Merci à toi.
@+ tard
Re: Concaténation contenu fichiers xml
Posté : 15 nov. 2010, 14:24
par stealth35
ouai t'as une ancienne version,
t'as plus qu'a faire un preg_match dans la contition, c'est que fais le RegexIterator
if($fileInfo->isDot() && !preg_match('/^[DE]/', $fileInfo->getFilename())) continue;
Re: Concaténation contenu fichiers xml
Posté : 15 nov. 2010, 16:27
par FreeFight37
ouai t'as une ancienne version,
t'as plus qu'a faire un preg_match dans la contition, c'est que fais le RegexIterator
if($fileInfo->isDot() && !preg_match('/^[DE]/', $fileInfo->getFilename())) continue;
Merci, c'est Ok.
@+