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

C Discussion :

Saut de ligne dans un flux xml


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 28
    Par défaut Saut de ligne dans un flux xml
    Bonjour;
    Je voudrais sauvegarder des données générées à partir d'un programme en C sous format xlm.
    cependant je n'arrive pas à insérer des sauts de ligne, le "\n" ne fonctionne pas et si j'utilise <br/> ce fonctionne mais la balise <br/> est affichée avec les données, ce qui n'est pas souhaitable pour mon application.

    ci joint le code qui permet de sauvegarder les données au format xlm
    Code xml : 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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
     
     
    	xml=fopen("mesure_xyz.xml", "at");
    	fprintf(xml,"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"); 
    	fprintf(xml, "<EmissionScan>\n");
    	fprintf(xml, "<Data>\n");
    	fprintf(xml, "<Coordinates>Left-handed Cartesian</Coordinates>\n");
    	fprintf(xml, "<X0>%fmm</X0>\n",pos[0][0]); 
    	fprintf(xml, "<Xstep>%fmm</Xstep>\n",pasX);
    	fprintf(xml, "<Xmax>%fmm</Xmax>\n",pos[0][0]+length_x);
     
    	fprintf(xml, "<Y0>%fmm</Y0>\n",pos[1][0]); 
    	fprintf(xml, "<Ystep>%fmm</Ystep>\n",pasY);
    	fprintf(xml, "<Ymax>%fmm</Ymax>\n",pos[1][0]+length_y);
     
    	fprintf(xml, "<Z0>1mm</Z0>\n");   
    	fprintf(xml, "<Measurement>\n"); 
    	fprintf(xml,"<List>\n");
     
    	for (i=0;i<=length_x;i++)
    		{//Boucle sur l'axe des X
    			for (j=0;j<=length_y;j++)
    				{//Boucle sur l'axe des Y
     
    					//Boucle sur les fréquences
    					for (k=0;k<nb_freq;k++)
    						{
    						// sauvegarde des coordonnées au format XML 
    							fprintf(xml,"\t%e\n",champ[k]);
    							//fprintf(xml,"<br />"); 
     
    						}  // Fin de la boucle des fréquences  
     
    				}  // Fin de la boucle sur Y 
     
    			} // Fin de la boucle sur X 
     
    	fprintf(xml,"</List>\n"); 
    	fprintf(xml, "</Measurement>\n");
    	fprintf(xml, "</Data>\n");
    	fprintf(xml, "</EmissionScan>\n"); 
    	fclose(xml);




    voici le fichier xml obtenu avec l'utilisation "\n":

    Code xml : 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
     
      <?xml version="1.0" encoding="UTF-8" ?> 
    - <EmissionScan>
    - <Data>
      <Coordinates>Left-handed Cartesian</Coordinates> 
      <X0>0.000000mm</X0> 
      <Xstep>1.000000mm</Xstep> 
      <Xmax>4.000000mm</Xmax> 
      <Y0>0.000000mm</Y0> 
      <Ystep>1.000000mm</Ystep> 
      <Ymax>4.000000mm</Ymax> 
      <Z0>1mm</Z0> 
    - <Measurement>
      <List>0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00</List> 
      </Measurement>
      </Data>
      </EmissionScan>



    et le resultat suivant avec l'utilisation de la balise <br/>

    Code xml : 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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
      <?xml version="1.0" encoding="UTF-8" ?> 
    - <EmissionScan>
    - <Data>
      <Coordinates>Left-handed Cartesian</Coordinates> 
      <X0>0.000000mm</X0> 
      <Xstep>1.000000mm</Xstep> 
      <Xmax>4.000000mm</Xmax> 
      <Y0>0.000000mm</Y0> 
      <Ystep>1.000000mm</Ystep> 
      <Ymax>5.000000mm</Ymax> 
      <Z0>1mm</Z0> 
    - <Measurement>
    - <List>
      0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 
      <br /> 
      0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 
      <br /> 
      0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 
      <br /> 
      0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 
      <br /> 
      0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 
      <br /> 
      0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 
      <br /> 
      </List>
      </Measurement>
      </Data>
      </EmissionScan>


    or le but de mon application est d'avoir des données avec ce format (forme matricielle) mais sans les balises <br/> entres les lignes.
    Quelqu'un peut-t-il m'aider svp.
    Merci d'avance.

  2. #2
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Si je comprend bien ce que tu veux obtenir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <List>
      0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 
      0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 
      0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 
      0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 
    .....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    ....
    for (i=0;i<=length_x;i++)//Boucle sur l'axe des X
    {
       for (j=0;j<=length_y;j++)//Boucle sur l'axe des Y
       {				    
          for (k=0;k<nb_freq;k++)//Boucle sur les fréquences
          {
           // sauvegarde des coordonnées au format XML 
              fprintf(xml,"\t%e",champ[k]);
          }// Fin de la boucle des fréquences  
          fprintf(xml,"\n");
       }  // Fin de la boucle sur Y 
    } // Fin de la boucle sur X 
    ....
    Il faudrait que tu regardes un peu plus attentivement les formats des entrées/sorties. C'est un problème tout à fait analogue à celui que tu as posé précédemment ici

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 28
    Par défaut
    le problème est que "\n" ne marche pas pour le format xml

  4. #4
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Citation Envoyé par rebele Voir le message
    le problème est que "\n" ne marche pas pour le format xml
    Qu'est-ce que ça veut dire ?

    Un '\n' va faire aller à la ligne dans le fichier (ce qui d'ailleurs, je crois, n'a pas grande signification du point de vue de "l'interprétation" du fichier XML)

    Un fichier XML est un fichier texte architecturé par un système de balises.

    En fait, que veux-tu exactement ? C'est la première question à se poser !

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 28
    Par défaut
    Ce format bien préci est établi par la commission international d'électrotechnique (norme IEC/TR 61967-x) pour la mesure des emissions électromagnétiques. Il est utilisé pour l'échange de données de mesure et de simulation entre industriels, chercheurs, distributeurs...

    les capteurs (sondes) balayent une surface rectangulaire, sphérique ou cylindrique pour rapporter les valeurs du champ électromagnétique émis à une certaine distance .
    Exemple pour une surface rectangulaire: pour x=4mm et y=3mm et un pas de déplacement des capteurs de 1mm.

    les données sauvegardées au format xml doivent avoir cette forme:
    <List>
    xxxxxxxxx xxxxxxxxx xxxxxxxxx
    xxxxxxxxx xxxxxxxxx xxxxxxxxx
    xxxxxxxxx xxxxxxxxx xxxxxxxxx
    xxxxxxxxx xxxxxxxxx xxxxxxxxx
    </List>

  6. #6
    Membre Expert
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 414
    Par défaut
    Bonjour,

    Dans un fichier XML, le formatage interne n'est là que pour le lecteur humain. Pour un programme (à part l'amorce), tout pourrait être sur une ligne.

    Ton fichier pourrait être dans ce format:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <?xml version="1.0" encoding="UTF-8" ?> 
    <EmissionScan><Data><Coordinates>Left-handed Cartesian</Coordinates><X0>0.000000mm</X0><Xstep>1.000000mm</Xstep><Xmax>4.000000mm</Xmax><Y0>0.000000mm</Y0><Ystep>1.000000mm</Ystep><Ymax>4.000000mm</Ymax><Z0>1mm</Z0><Measurement><List>0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00</List></Measurement></Data></EmissionScan>
    sans pour autant être "invalide" ou "pas bien formé".

    A mon avis, tu perds ton temps en essayant de formater un fichier XML.

    Je ne vois nul part dans ton code que tu remplaces les caractères ',",<,>, et & par leur entité respective en écrivant ton fichier XML:
    * &amp; (& ou "ampersand")
    * &lt; (< ou "less than")
    * &gt; (> ou "greater than")
    * &apos; (' ou "apostrophe")
    * &quot; (" ou "quotation mark")

  7. #7
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 495
    Par défaut
    Hello,

    Citation Envoyé par rebele Voir le message
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    fprintf(xml,"\t%e\n",champ[k]);
    Il n'y a pas de raison pour que ceci ne t'insère pas de retour à la ligne après chaque valeur. Es-tu sûr de nous avoir posté le code exact ?

Discussions similaires

  1. saut de ligne dans un ficier XML
    Par DLOYAS dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 07/06/2015, 09h51
  2. [PHP 5.3] Ajouter des sauts de ligne dans un fichier XML
    Par geforce dans le forum Langage
    Réponses: 4
    Dernier message: 08/04/2010, 15h32
  3. saut de ligne dans un flux xml
    Par rebele dans le forum Débuter
    Réponses: 0
    Dernier message: 03/02/2009, 16h34
  4. [SAX] saut de ligne dans champ XML
    Par Schuss dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 15/10/2007, 11h48
  5. Nombre de sauts de ligne dans un String
    Par Johnbob dans le forum ASP
    Réponses: 7
    Dernier message: 03/03/2004, 15h33

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