Comme le titre l'indique, c'est juste une classe (simple) pour créer un fichier xml.
Rien de bien fou, mais vachement pratique.
Il y a surement un maximum de choses rajouttables (je suis à votre écoute), particulièrement au niveau des vérifications...
L'utilisation que j'en ai est simpliste, ce qui fait que je n'y ai pas géré beaucoup de choses... juste:
-L'encodage (choix, mais ISO-8859-2 par défaut)
-Les noeuds ouverts (je sais pas si ca s'appelle comme ca), qui sont ceux qui en contiennent d'autres
-Les noeuds normaux (Ca m'étonnerait que ca s'appelle comme ca), du genre <a>b</a>
-Les commentaires
Le fichier qui en sort est indenté comme il se doit.
Pour une utilisation plus poussé du xml, cette classe peut servir de base pour une autre plus complète.
J'espère que ca pourra servir
Source / Exemple :
<?php
// Classe pour créer un fichier xml
class creer_xml
{
var $nomdufichier; //Nom du fichier à créer
private $contenu; //Buffer
private $arborescence; //Arborescence instantanée xml
//Constructeur PHP5
function __construct( $nomdufichier,$balise_principale,$encoding="ISO-8859-2" )
{
//$balise_principale est la balise qui englobe les autres
//$encoding est l'encodage. J'ai choisi par défaut ISO-8859-2, c'est moins chiant que UTF8
$this->nomdufichier = $nomdufichier ;
$this->contenu = '<?xml version="1.0" encoding="'.$encoding.'"?>' ;
$this->contenu .= $this->entrer($balise_principale) ;
}
/*//Pour une utilisation en PHP4:
//Constructeur PHP4
function creer_xml( $nomdufichier,$balise_principale,$encoding="ISO-8859-2" )
{
$this->__construct( $nomdufichier,$balise_principale,$encoding );
}
//Penser à remplacer les private en var... ca devrait marcher
//Crée un noeud ouvert (qui contiendra d'autres noeuds)
function entrer( $champs )
{
//Ajoute le champs actuel dans l'arborescence instantanée
$this->arborescence[] = $champs;
//Ecrit le noeud
$this->contenu .= '<'.$champs.'>';
}
//Ferme le noeud ouvert courrant (ou tous si $quitter = TRUE)
function sortir($quitter=FALSE)
{
//Si on essaie de fermer le dernier noeud sans le vouloir, on affiche un message d'erreur
if (!$quitter AND count($this->arborescence)==1)
die('Sortie de boucle impossible...');
//On enlève l'élément du tableau le plus bas et on le récupère dans $champs
$champs = array_pop($this->arborescence);
//On ferme le noeud en question
$this->contenu .= '</'.$champs.'>';
//Si on veut tout fermer, petite récursivité pour fermer tous les noeud
if ($quitter AND count($this->arborescence)>0)
$this->sortir(TRUE);
}
//Crée un noeud en ligne (ex: <noeud>valeur</noeud>)
function ligne( $champs,$valeur )
{
$valeur = str_replace('<','<',$valeur);
$valeur = str_replace('&','&',$valeur);
//Ecriture dans le buffer du noeud
$this->contenu .= '<'.$champs.'>'.$valeur.'</'.$champs.'>';
}
//Ajoute un commentaire
function commentaire( $contenu )
{
//Ecriture dans le buffer du commentaire
$this->contenu .= '<!-- '.$contenu.' -->';
}
//Copie du buffer dans le fichier demandé
function creerlefichier()
{
//On sort de tous les noeuds ouverts
$this->sortir(TRUE);
//Ouverture du fichier
$fichier = fopen($this->nomdufichier,'w+') ;
//Ecriture du contenu du buffer
$rep = fwrite($fichier,$this->contenu) ;
//Fermeture du fichier
fclose($fichier) ;
//Retour de la réponse, pour pouvoir verifier les erreurs
return $rep ;
}
}
?>
/********************************************************/
/* UTILISATION: */
/********************************************************/
include('classe_xml.php');
$xml = new creer_xml('test.xml','soirée');
$xml->commentaire('Liste des membres de l\'association');
$xml->entrer('membres');
$xml->entrer('Jean');
$xml->ligne('Age','32');
$xml->ligne('Ville','Lyon');
$xml->sortir();
$xml->entrer('Jeanne');
$xml->ligne('Age','37');
$xml->ligne('Ville','Toulouse');
$xml->sortir();
$xml->sortir();
$xml->commentaire('Liste des gens invités par l\'association');
$xml->entrer('invites');
$xml->entrer('Joe');
$xml->ligne('Age','28');
$xml->ligne('Ville','Marseille');
//Les 2 lignes commentées ne sont pas nécessaires, sauf peut-etre pour la comprehension
/* $xml->sortir();
$xml->sortir();*/
$xml->creerlefichier();
/* LE FICHIER CREE RESSEMBLERA ALORS ETRANGEMENT A:
<?xml version="1.0" encoding="ISO-8859-2" ?>
<soirée>
<!-- Liste des membres de l'association -->
<membres>
<Jean>
<Age>32</Age>
<Ville>Lyon</Ville>
</Jean>
<Jeanne>
<Age>37</Age>
<Ville>Toulouse</Ville>
</Jeanne>
</membres>
<!-- Liste des gens invités par l'association -->
<invites>
<Joe>
<Age>28</Age>
<Ville>Marseille</Ville>
</Joe>
</invites>
</soirée>
Conclusion :
ATTENTION: CETTE CLASSE N'INDIQUE EN AUCUN CAS LES POSSIBILITES DU FORMAT XML: ELLE PERMET SIMPLEMENT DE CREER UN FICHIER SIMPLE DE CE TYPE. (voir le post de malalam à ce sujet)
-n'ayant acces qu'a php5, si quelqu'un a fait le test en php4, j'aimerais un retour... Merci-
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.