Comment générer un fichier XML dynamicment en utilisant PHP?

Je dois générer un fichier XML dynamicment à l’exécution. Aidez-moi à générer dynamicment le fichier XML ci-dessous en utilisant PHP.

   song1.mp3 Track 1 - Track Title   song2.mp3 Track 2 - Track Title   song3.mp3 Track 3 - Track Title   song4.mp3 Track 4 - Track Title   song5.mp3 Track 5 - Track Title   song6.mp3 Track 6 - Track Title   song7.mp3 Track 7 - Track Title   song8.mp3 Track 8 - Track Title  

J’utiliserais SimpleXMLElement .

 '); for ($i = 1; $i <= 8; ++$i) { $track = $xml->addChild('track'); $track->addChild('path', "song$i.mp3"); $track->addChild('title', "Track $i - Track Title"); } Header('Content-type: text/xml'); print($xml->asXML()); 

Pour créer un document XML en PHP, vous devez insérer une classe DOMDocument, créer des noeuds enfants et append ces noeuds dans la twig correcte de l’arborescence du document.

Pour référence, vous pouvez lire http://it.php.net/manual/en/book.dom.php

Nous allons maintenant faire un tour rapide du code ci-dessous.

  • à la ligne 2, nous créons un document xml vide (spécifiez simplement la version xml (1.0) et l’encodage (utf8))
  • maintenant nous devons remplir l’arbre xml:
    • Nous devons créer un xmlnode (ligne 5)
    • et nous devons append ceci dans la position correcte. Nous créons la racine afin de l’append directement au domdocument.
    • Remarque create element ajoute l’élément au nœud et renvoie le nœud inséré, nous sauvegardons cette référence pour append les nœuds de piste au nœud racine (appelé accessoirement xml).

Ce sont les bases, vous pouvez créer et append un nœud dans une seule ligne (13ème, par exemple), vous pouvez faire beaucoup d’autres choses avec l’API dom. C’est à toi de decider.

 createElement("xml"); /* append it to the document created */ $xmlRoot = $domtree->appendChild($xmlRoot); $currentTrack = $domtree->createElement("track"); $currentTrack = $xmlRoot->appendChild($currentTrack); /* you should enclose the following two lines in a cicle */ $currentTrack->appendChild($domtree->createElement('path','song1.mp3')); $currentTrack->appendChild($domtree->createElement('title','title of song1.mp3')); $currentTrack->appendChild($domtree->createElement('path','song2.mp3')); $currentTrack->appendChild($domtree->createElement('title','title of song2.mp3')); /* get the xml printed */ echo $domtree->saveXML(); ?> 

Edit: Juste un autre conseil: Le principal avantage de l’utilisation d’un xmldocument (le document dom ou celui du simplexml) au lieu d’imprimer le xml, est que le xmltree est consultable avec la requête xpath

un moyen facile de le faire est:

 "; echo ''; // echo some dynamically generated content here /*  song_path track_number - track_title  */ echo ''; ?> 

enregistrez-le en tant que .php

Avec FluidXML, vous pouvez générer très facilement votre XML.

 $tracks = fluidxml('xml'); $tracks->times(8, function ($i) { $this->add([ 'track' => [ 'path' => "song{$i}.mp3", 'title' => "Track {$i} - Track Title" ] ]); }); 

https://github.com/servo-php/fluidxml

Jetez un coup d’œil au système de templates Tiny But Strong . Il est généralement utilisé pour la modélisation de HTML, mais il existe une extension qui fonctionne avec les fichiers XML. Je l’utilise largement pour créer des rapports dans lesquels je peux avoir un fichier de code et deux fichiers de modèle – htm et xml – et l’utilisateur peut ensuite choisir d’envoyer un rapport à l’écran ou à une feuille de calcul.

Un autre avantage est que vous n’avez pas à coder le XML à partir de zéro, dans certains cas, je voulais exporter de très grandes feuilles de calcul complexes et au lieu d’avoir à coder toutes les exportations, il suffit d’enregistrer une feuille de calcul existante. xml et substituer dans des balises de code où la sortie de données est requirejse. C’est un moyen rapide et très efficace de travailler.

 $query=mysql_query("select * from tablename")or die(mysql_error()); $xml="\n\t\t"; while($data=mysql_fetch_array($query)) { $xml .="\n\t\t"; $xml .= "".$data['id']."\n\t\t"; $xml .= "".$data['email_address']."\n\t\t"; $xml .= "".$data['verify']."\n\t\t"; $xml .= "".$data['status']."\n\t\t"; $xml.="\n\t"; } $xml.="\n\r"; $xmlobj=new SimpleXMLElement($xml); $xmlobj->asXML("text.xml"); 

Il suffit de se connecter avec votre firebase database, il va créer un fichier test.xml dans votre dossier de projet