web-dev-qa-db-fra.com

Créer un nouveau fichier XML et y écrire des données?

Je dois créer un nouveau fichier XML et l'écrire sur mon serveur. Donc, je cherche la meilleure façon de créer un nouveau fichier XML, d'y écrire des nœuds de base, de l'enregistrer. Ouvrez-le à nouveau et écrivez plus de données.

J'utilise file_put_contents() pour enregistrer le fichier. Mais, pour en créer un nouveau et écrire quelques nœuds de base, je ne suis pas sûr de la meilleure méthode.

Des idées?

30
Nic Hubbard

DOMDocument est un excellent choix. Il s'agit d'un module spécialement conçu pour créer et manipuler des documents XML. Vous pouvez créer un document à partir de zéro, ou ouvrir des documents (ou chaînes) existants et naviguer et modifier leurs structures.

$xml = new DOMDocument();
$xml_album = $xml->createElement("Album");
$xml_track = $xml->createElement("Track");
$xml_album->appendChild( $xml_track );
$xml->appendChild( $xml_album );

$xml->save("/tmp/test.xml");

Pour rouvrir et écrire:

$xml = new DOMDocument();
$xml->load('/tmp/test.xml');
$nodes = $xml->getElementsByTagName('Album') ;
if ($nodes->length > 0) {
   //insert some stuff using appendChild()
}

//re-save
$xml->save("/tmp/test.xml");
63
zombat

PHP a plusieurs bibliothèques pour XML Manipulation .

L'approche Document Object Model (DOM) (qui est une norme W3C et devrait être familière si vous l'avez utilisée dans d'autres environnements tels qu'un navigateur Web ou Java, etc.). Vous permet de créer des documents comme suit

<?php
    $doc = new DOMDocument( );
    $ele = $doc->createElement( 'Root' );
    $ele->nodeValue = 'Hello XML World';
    $doc->appendChild( $ele );
    $doc->save('MyXmlFile.xml');
?>

Même si vous n'avez jamais rencontré le DOM auparavant, cela vaut la peine d'y investir du temps car le modèle est utilisé dans de nombreux langages/environnements.

13
Robert Christie

Avec FluidXML vous pouvez générer et stocker un document XML très facilement.

$doc = fluidxml();

$doc->add('Album', true)
        ->add('Track', 'Track Title');

$doc->save('album.xml');

Le chargement d'un document à partir d'un fichier est tout aussi simple.

$doc = fluidify('album.xml');

$doc->query('//Track')
        ->attr('id', 123);

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

2
Daniele Orlando