begin process at 2008 08 20 12:18:29
1 228 786 membres
158 nouveaux aujourd'hui
14 257 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

FONCTIONS DE BASE POUR GÉNÉRER DU XML EN PHP


Information sur la source

Catégorie :Xml Classé sous : php, xml, string, tag, value Niveau : Débutant Date de création : 10/12/2007 Date de mise à jour : 10/12/2007 12:03:59 Vu : 6 002

Note :
Aucune note

Commentaire sur cette source (7)
Ajouter un commentaire et/ou une note

Description

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

  • <?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;
  • }
  • ?>
<?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+
10 décembre 2007 12:03:59 :
quelques précsions sur le contenu des fonctions.
  • signaler à un administrateur
    Commentaire de depression le 10/12/2007 12:44:05

    Je ne noterai pas cette source.

    Si c'est pour faire cela, le DOM est parfait...

  • signaler à un administrateur
    Commentaire de wipfire le 10/12/2007 13:11:10

    c'est vrai que je connais mal le dom, je l'utilise surtout pour du javascript et la gestion de l'interface... je vais voir !

  • signaler à un administrateur
    Commentaire de malalam le 10/12/2007 13:13:31 administrateur CS

    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é.

  • signaler à un administrateur
    Commentaire de wipfire le 10/12/2007 13:18:23

    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 ...

  • signaler à un administrateur
    Commentaire de codefalse le 10/12/2007 14:19:01 administrateur CS

    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 !

  • signaler à un administrateur
    Commentaire de garfield90 le 10/12/2007 14:31:45

    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.

  • signaler à un administrateur
    Commentaire de codefalse le 10/12/2007 15:21:04 administrateur CS

    le xml, c'est beaucoup plus complexe que des tags et des attributs :p

Ajouter un commentaire

Pub



Appels d'offres

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS