IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[SimpleXML] Enregistrer un document XML de manière formatée


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2004
    Messages : 319
    Points : 83
    Points
    83
    Par défaut [SimpleXML] Enregistrer un document XML de manière formatée
    Bonjour,

    Je veux enregistrer un document XML. Mon problème c'est que j'utilise SimpleXML mais il me sort tous sur la même ligne. Je n'arrive pas à trouver le moyen pour qu'il indente ou passe juste a la ligne.

    Ma structure est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?xml version="1.0" encoding="UTF-8"?>
    <fichier>
    	<subject>SUJET</subject>
    	<item type="radio" name="q1" display="line">1) Question1
    		<subitem val="q1|1">sdfsf</subitem>
    		<subitem val="q1|2">sfdsf</subitem>
    	</item>
    </fichier>
    Voici ce que je fait en PHP :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    $filename = "data/fichier.xml";
     
    if(!file_exists($filename)) {
    	$fp=fopen($filename,"w");
    	fputs($fp,'<?xml version="1.0" encoding="UTF-8"?>'."\n");
    	fputs($fp,"<fichier>"."\n");
    	fputs($fp,"\t"."<subject>".$_SESSION['nomform']."</subject>"."\n");
    	fputs($fp,"</fichier>");
    	fclose($fp);
    }
     
    $xml = simplexml_load_file($filename);
    $question = $xml->addChild('item', $nbiA.") ".$libelle);
    $question->addAttribute('type', $type);
    $question->addAttribute('name', $name);
    ...
    $xml->asXML($filename);
    Le résultat dans le fichier (après ajout de questions) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?xml version="1.0" encoding="UTF-8"?>
    <fichier>
    	<subject>SUJET</subject>
    <item type="radio" name="q1" display="line">1) Question1<subitem val="q1|1">REP1</subitem><subitem val="q1|2">REP2</subitem></item></fichier>
    Si vous pouvez m'indiquer la démarche à suivre et me dire comment faire.

    Merci d'avance.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    je dirais, de mémoire qu'en repassant ton SimpleXML en DOM, avec la propriété formatOutput de ton DOMDocument à true, le fichier sera indenté comme il faut...
    Ca ressemblerait à un truc comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $doc = new DOMDocument('1.0');
    $doc->formatOutput = true;
    $domnode = dom_import_simplexml($xml);
    $domnode = $doc->importNode($domnode, true);
    $domnode = $doc->appendChild($domnode);
    $doc->save($sXML);

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2004
    Messages : 319
    Points : 83
    Points
    83
    Par défaut
    Citation Envoyé par Swifty_core Voir le message
    Bonjour,
    je dirais, de mémoire qu'en repassant ton SimpleXML en DOM, avec la propriété formatOutput de ton DOMDocument à true, le fichier sera indenté comme il faut...
    Ca ressemblerait à un truc comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $doc = new DOMDocument('1.0');
    $doc->formatOutput = true;
    $domnode = dom_import_simplexml($xml);
    $domnode = $doc->importNode($domnode, true);
    $domnode = $doc->appendChild($domnode);
    $doc->save($sXML);
    Cela ne change rien j'avais vu cela.

    Sinon il y a une limite pour une ligne dans un fichier ???
    Ou on peu laisser sur la meme ligne ? je ne risque aps de me retrouver avec un fichier coupé si je rentre plusieurs ... ?

    Merci

  4. #4
    Invité
    Invité(e)
    Par défaut
    Aucune limites, je dirais même que c'est mieux sur une ligne puisque des \t + \n\r multipliés par le nombre d'entrées, ce n'est pas rien au niveau taille du fichier... En gros, pas d'indentation = plus compact = plus rapide... Après tout est une question de troll

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2004
    Messages : 319
    Points : 83
    Points
    83
    Par défaut
    Citation Envoyé par Swifty_core Voir le message
    Aucune limites, je dirais même que c'est mieux sur une ligne puisque des \t + \n\r multipliés par le nombre d'entrées, ce n'est pas rien au niveau taille du fichier... En gros, pas d'indentation = plus compact = plus rapide... Après tout est une question de troll
    Merci infiniment !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Traiter plusieurs documents XML de manière automatique
    Par loudji dans le forum Format d'échange (XML, JSON...)
    Réponses: 10
    Dernier message: 15/10/2012, 23h03
  2. Enregistrer un document XML
    Par Msysteme dans le forum C#
    Réponses: 1
    Dernier message: 06/12/2009, 11h21
  3. [SimpleXML] parser un document xml distant
    Par turican2 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 22/05/2007, 15h18
  4. [XSL] transformer un document xml dans le format pdf
    Par soumou dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 17/11/2006, 19h39
  5. Documentation sur la manière de travailler avec le XML en java
    Par DelPiero62 dans le forum Format d'échange (XML, JSON...)
    Réponses: 8
    Dernier message: 26/03/2003, 09h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo