265 votes

Comment générer le fichier XML dynamiquement à l’aide de PHP ?

J’ai générer un fichier xml dynamiquement à l’exécution. S’il vous plaît m’aider à créer le dessous XML du fichier dynamiquement à l’aide de PHP.

387voto

Ivan Krechetov Points 6465

J’utiliserais SimpleXMLElement.

191voto

Eineki Points 8632

Depuis que cette question est un des devoirs je pense que vous devriez éviter les raccourcis comme la création de modèles de systèmes et de classes d'aide de votre champ d'application devrait être d'apprendre à faire quelque chose, de ne pas faire les choses.

Pour créer un XMLdocument en PHP, vous devriez instance d'une classe DOMDocument, de créer des nœuds enfants et de les ajouter à ces nœuds dans la bonne branche de l'arborescence du document.

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

Maintenant, nous allons jeter un rapide tour de le code ci-dessous.

  • à la ligne 2, nous avons créer un document xml vide (il suffit de spécifier xml version (1.0) et l'encodage (utf8))
  • maintenant nous avons besoin pour remplir l'arborescence xml:
    • Nous devons créer un xmlnode (ligne 5)
    • et nous devons ajouter cela dans la bonne position. Nous créons de la racine si on ajoute directement à l'objet domdocument.
    • Note de créer un élément ajouter l'élément de nœud et retour le nœud inséré, nous enregistrer cette référence, pour ajouter la piste des nœuds au nœud racine (d'ailleurs appelé xml).

Ce sont les bases, vous pouvez créer et ajouter un nœud dans une ligne (13, par exemple), vous pouvez faire beaucoup d'autres choses avec l'api dom. C'est à vous.

<?php    
    /* create a dom document with encoding utf8 */
    $domtree = new DOMDocument('1.0', 'UTF-8');

    /* create the root element of the xml tree */
    $xmlRoot = $domtree->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 indice: Le principal avantage de l'utilisation d'un xmldocument (le document dom l'un ou l'simplexml un au lieu de l'impression, le xml,c'est que le xmltree est consultable avec la requête xpath

29voto

andyk Points 5532

un moyen facile de le faire est :

Enregistrez-le comme .php

4voto

Cruachan Points 11749

Jetez un oeil à la petite Mais Solide système de template. Il est généralement utilisé pour les templates HTML, mais il y a une extension qui fonctionne avec des fichiers XML. J'utilise cette profondeur pour la création de rapports où je peux en avoir un fichier de code et les fichiers de modèle de deux - htm et xml - et l'utilisateur peut alors choisir d'envoyer un rapport à l'écran ou une feuille de calcul.

Un autre avantage est que vous n'avez pas de code xml à partir de zéro, dans certains cas, j'ai eu envie d'exportation de très grandes feuilles de calcul complexes, et au lieu d'avoir à le code de toutes les exporter tout ce qui est nécessaire est pour enregistrer une feuille de calcul existante en xml et remplacer dans des balises de code où les données de sortie est nécessaire. C'est un rapide et un moyen très efficace de travailler.

-14voto

pratik Points 646
<pre><code></code><p>Son simple il suffit de connecter à votre base de données, il va créer fichier test.xml dans votre dossier de projet</p></pre>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X