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

Soyez le premier à donner votre avis sur cette source.

Snippet vu 15 825 fois - Téléchargée 20 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
1127
Date d'inscription
mardi 8 janvier 2002
Statut
Modérateur
Dernière intervention
21 avril 2009
1
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

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
1127
Date d'inscription
mardi 8 janvier 2002
Statut
Modérateur
Dernière intervention
21 avril 2009
1
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

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
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
18
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é.

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.