Fusionnez plusieurs fichiers XML via FTP

Je vous partage mon code qui permet de fusionner plusieurs fichiers XML en les récupérant via FTP sur un serveur distant. Une fois la connexion faite, le script va générer un seul fichier XML  valide en fonction du nœud que vous aurez précisé dans le code.  Ce fichier une fois placé à la racine de votre site (ou ailleurs) peut être lancé automatiquement via une tache planifiée (dans le cas d’une importation wordpress, par exemple)… Si vous avez besoin d’aide pour l’installation et le paramétrage ou même pour une demande spécifique, n’hésitez pas de me contacter, je serai ravi de vous répondre rapidement 🙂

Remplacer les xxxxx dans le script par vos données

<?php
// Configuration FTP
$ftpHost = 'xxxxx'; // Adresse du serveur FTP
$ftpUser = 'xxxxxxx'; // Nom d'utilisateur FTP
$ftpPass = 'xxxxxx'; // Mot de passe FTP
$remoteDirectory = '/xxxxxx'; // Répertoire distant contenant les fichiers XML
// Connexion FTP en mode passif
$ftp = ftp_connect($ftpHost);
if (!$ftp) {
    die('Impossible de se connecter au serveur FTP.');
}
if (!ftp_login($ftp, $ftpUser, $ftpPass)) {
    die('Échec de l\'authentification FTP.');
}
if (!ftp_pasv($ftp, true)) {
    die('Impossible de passer en mode FTP passif.');
}
// Liste des fichiers dans le répertoire distant
$remoteFiles = ftp_nlist($ftp, $remoteDirectory);
if (!$remoteFiles) {
    die('Aucun fichier trouvé dans le répertoire distant.');
}
// Téléchargez chaque fichier localement sous son nom d'origine
foreach ($remoteFiles as $remoteFile) {
    $localFile = basename($remoteFile);
    if (ftp_get($ftp, $localFile, $remoteFile, FTP_BINARY)) {
        echo "Téléchargement de $remoteFile terminé.\n";
    } else {
        echo "Échec du téléchargement de $remoteFile.\n";
    }
}
// Fermez la connexion FTP
ftp_close($ftp);
echo "Tous les fichiers ont été téléchargés dans le répertoire actuel.\n";
// Tableau pour stocker tous les fichiers XML à fusionner
$xmlFiles = array('xxx.xml', 'xxx.xml', 'xxx.xml');
// Créez un nouveau document XML pour la fusion
$mergedXml = new DOMDocument();
$mergedXml->formatOutput = true; // Pour une sortie bien formatée
// Élément racine du document fusionné
$root = $mergedXml->createElement('Root');
$mergedXml->appendChild($root);
// Parcourez chaque fichier XML à fusionner
foreach ($xmlFiles as $file) {
    $xml = new DOMDocument();
    $xml->load($file);
    // Récupérez tous les nœuds <xxxxx> du fichier
    $items = $xml->getElementsByTagName('xxxxxx');
    // Parcourez chaque nœud <xxxxx> et ajoutez-le au document fusionné
    foreach ($items as $item) {
        // Importez le nœud <xxxxx> dans le document fusionné
        $importedItem = $mergedXml->importNode($item, true);
        // Ajoutez le nœud importé à l'élément racine
        $root->appendChild($importedItem);
    }
}
// Enregistrez le document fusionné dans un fichier
$mergedXml->save('fusion.xml');
echo "Fusion terminée. Le fichier fusion.xml a été créé.";
?>