Fonctions de base pour générer du xml en php

0/5 (7 avis)

Snippet vu 16 304 fois - Téléchargée 22 fois

Contenu du snippet

J'avais besoin d'extraire beaucoup de données d'une base et de générer un flux xml en retour (pratique pour la mise en forme) et comme il ne faut surtout pas se planter dans l'écriture d'un xml, des petites fonctions à base de string me paraissaient suffisantes, j'ai quand même regardé sur le net, et c'est tellement simple que je ne l'ai pas trouvé (enfin ça existe ptet mais pas sur ce site apparemment....)
Les fonctions prennent en entrée le flux string et retourne la chaîne modifiée, elles initient le doc, permettent d'ajouter une dtd, un stylesheet ainsi que l'ouverture/fermeture de balises ainsi qu'une simple ligne tag/value : on ne peut pas faire plus simple, le code serait ptet mieux avec plein de fonctions que je connais pas en PHP mais ça fonctionne.
Les voici :

Source / Exemple :


<?php
function startXmlDoc($xml)
{
	$xml.="<?xml version='1.0' encoding='UTF-8'?>";				
	return $xml;
}

function addSystemDTD($xml, $DTDname, $DTDFile)
{
	$xml.="<!DOCTYPE ".$DTDname." SYSTEM '".$DTDFile."'>";						
	return $xml;
}		
	
function addStylesheet($xml, $xsl)
{
 	$xml.="<?xml-stylesheet href='".$xsl."' type='text/xsl'?>";
	return $xml;
}	

function startXmlElement($xml, $tag)
{
	$xml.="<".$tag.">";
	return $xml;
}

function endXmlElement($xml, $tag)
{
	$xml.="</".$tag.">";
	return $xml;
}
	
function addXmlValue($xml, $tag, $value)
{
	$xml.="<".$tag.">".$value."</".$tag.">";
	return $xml;
}
?>

Conclusion :


Evidemment, vous pourriez largement améliorer selon vos besoins : gestion encoding, attributs, balise simple ...
C'est une base en attendant, et moi ça me sert bien !! j'espère que ce sera pareil pour vous !
A+

A voir également

Ajouter un commentaire Commentaires
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
10 déc. 2007 à 15:21
le xml, c'est beaucoup plus complexe que des tags et des attributs :p
cs_garfield90 Messages postés 388 Date d'inscription lundi 7 juillet 2003 Statut Webmaster Dernière intervention 10 février 2009
10 déc. 2007 à 14:31
Source sans grand interet sauf peut etre la discussion qui en découle.

une classe ayant le contenu du xml permettrait d'avoir a éviter de passer le contenu ($xml) a chaque vois, ce qui peut etre lourd

de plus, l'ajout d'attribut est franchement pas si dur que ca a gerer.

cette fonction n'a pas d'interet dans l'état :
# function addXmlValue($xml, $tag, $value)
# {
# $xml.="<".$tag.">".$value."</".$tag.">";
# return $xml;
# }
car equivalent à :
endXmlElement(startXmlElement(xml, 'toto').'contenu', 'toto');

tu ne prends pas en compte les charsets et les <[[CDATA

etc.
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
10 déc. 2007 à 14:19
En toute objectivité, vraiment, cette source doit-êlle vraiment rester ici ? Etant donné DomDocument, cette source offre une regression au personne ignorant Domdocument, ce n'est donc pas pertinent comme code.

Après, c'est mon avis !
wipfire Messages postés 2 Date d'inscription samedi 16 juin 2007 Statut Membre Dernière intervention 10 décembre 2007
10 déc. 2007 à 13:18
ok j'ai vu la librairie, c'est super complet et tout mais pour ce que j'avais à faire, ça m'a suffi et puis, on peut faire autant de sous niveaux que nécessaire... Effectivement, ne pas réinventer la roue, c'est sûr !! Encore pour le tout petit besoin que j'avais, ç'est suffisant, je le retire ...
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
10 déc. 2007 à 13:13
Et puis c'est très limité comme création de xml : il faut faire ça séquentiellement absolument, et on ne peut avoir qu'un niveau de profondeur. ET on ne peut pas avoir d'attrribut, ou des éléments sans textNode. Et pas de CDATA.
Franchement, c'est bien plus afficace avec DOMXML, et pas beaucoup plus compliqué.
Afficher les 7 commentaires

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.