Insérer la valeur d'une variable entre deux balise XML. [Résolu]

Signaler
Messages postés
5
Date d'inscription
mardi 2 décembre 2008
Statut
Membre
Dernière intervention
14 mai 2009
-
Messages postés
5
Date d'inscription
mardi 2 décembre 2008
Statut
Membre
Dernière intervention
14 mai 2009
-
Bonjour.

J'ai créé un programme en Langage C, qui crée un fichier XML avec sa DTD, sous Paradigm C++.

Mon problème est que je n'arrive pas à y inclure la valeur de ma variable cmd_0200 entre les deux balises <REGISTRATION>.

J'ai essayée pas de mal de chose, mais la je ne sais plus quoi faire.

Pouvez-vous m'aider, merci à tous.

Voici mon code de l'essai avec <!NOTIFICATION

/*
// introduire variable dans le fichier XML
*/

#include        <stdio.h>
#include        <string.h>
#include        <stdlib.h>
#include        <dirent.h>
#include        <dir.h>

FILE *create_file_xml = NULL;
FILE *create_file_dtd = NULL;

char page_dtd[5000];
char page_xml[5000];

char plaque[]={"9854 VZ 19"};

char carburant[]={"GO"};
char path_dir[25];
char path_xml[40];
char path_dtd[40];

char cmd_0200[]={"9854 VZ 19"};

void main(void)
{
   if((strncmp(carburant,"ES",2)==0)  ||  (strncmp(carburant,"GL",2)==0))
   {
      strcpy(path_dir,"\");
      strcat(path_dir,carburant);
      mkdir(path_dir);
      strcat(path_dir,"\");
      strcpy(path_xml,path_dir);
      strcat(path_xml,plaque);
      strcat(path_xml,".xml");
      strcpy(path_dtd,path_dir);
      strcat(path_dtd,"ES_GL.dtd");
        if ((create_file_xml fopen ( path_xml,"a")) NULL)
       {
           fprintf(stderr,"Fichier inexistant.\n");
       }
       else
       {
          strcpy(page_xml,"<?xml version="1.0" encoding="iso-8859-1" standalone="no"?>\n"
                                    "<!DOCTYPE VEHICULE SYSTEM "ES_GL.dtd">\n"
                                    "\t<RESULTS VERSION="1.0">\n"
                                    "\t\t<RESULTSHEADER>\n"
                                    "\t\t\t<VEHICULE>\n"
                                    "\t\t\t\t\n"
                                    "\t\t\t\t\t<REGISTRATION>cmd_0200</REGISTRATION>\n"
                                    "\t\t\t\t\t<FUEL1>ESS</FUEL1>\n"
                                    "\t\t\t\t\n"
                                    "\t\t\t</VEHICULE>\n"
                                    "\t\t</RESULTSHEADER>\n"
                                    "\t</RESULTS>\n");
           fprintf(create_file_xml,"%s",page_xml);
       }
       fclose(create_file_xml);
      if ((create_file_dtd fopen ( path_dtd,"w")) NULL)
      {
          fprintf(stderr,"Fichier inexistant.\n");
      }
      else
      {
         strcpy(page_dtd,"<!ELEMENT RESULTS (RESULTSHEADER, RESULT+)>\n"
                                   "\n"
                                   "<!ATTLIST RESULTS\n "
                                   "                  VERSION CDATA "1.0"\n"
                                   ">\n"
                                   "\n"
                                   "<!ELEMENT RESULTSHEADER (VEHICLE)>\n"
                                   "\n"
                                   "<!ELEMENT RESULT (TITLE, HEADER, SECTION+)>\n"
                                   "\n"
                                   "<!ATTLIST RESULT\n"
                                   "                         OBJECT (EMISSION) #REQUIRED\n"
                                   "                 METHOD (SMOKE | SMOKE_TURBO | SMOKE_OBD) #REQUIRED\n"
                                   ">\n"
                                   "\n"
                                   "<!ELEMENT VEHICLE (IDENT)>\n"
                                   "\n"
                                   "<!ELEMENT REGISTRATION (#PCDATA)>\n"
                                   "\n"
                                   "<!ELEMENT FUEL1 (#PCDATA)>\n"
                                   "\n"
                                   "<!NOTATION TXT SYSTEM "Texte">\n"
                                  "\n"
                                  "<!ENTITY cmd_0200 SYSTEM "Texte" NDATA TXT>\n");
         fprintf(create_file_dtd,"%s",page_dtd);
      }
      fclose(create_file_dtd);
   } // fin de if strncmp(carburant ESS...)

   else if(strncmp(carburant,"GO",2)==0)
   {
       strcpy(path_dir,"\");
       strcat(path_dir,carburant);
      mkdir(path_dir);
      strcat(path_dir,"\");
      strcpy(path_xml,path_dir);
      strcat(path_xml,plaque);
      strcat(path_xml,".xml");
      strcpy(path_dtd,path_dir);
      strcat(path_dtd,"GO.dtd");
        if ((create_file_xml fopen ( path_xml,"a")) NULL)
       {
           fprintf(stderr,"Fichier inexistant.\n");
       }
       else
       {
          strcpy(page_xml, "<?xml version="1.0" encoding="iso-8859-1" standalone="no"?>\n"
                                     "<!DOCTYPE VEHICULE SYSTEM "GO.dtd">\n"
                                     "\t<RESULTS VERSION="1.0">\n"
                                     "\t\t<RESULTSHEADER>\n"
                                     "\t\t\t<VEHICULE>\n"
                                     "\t\t\t\t\n"
                                     "\t\t\t\t\t<REGISTRATION>cmd_0200</REGISTRATION>\n"
                                     "\t\t\t\t\t<FUEL1>GO</FUEL1>\n"
                                     "\t\t\t\t\n"
                                     "\t\t\t</VEHICULE>\n"
                                     "\t\t</RESULTSHEADER>\n"
                                     "\t</RESULTS>\n");

         fprintf(create_file_xml,"%s",page_xml);
      }      if ((create_file_dtd fopen ( path_dtd,"w")) NULL)
      {
          fprintf(stderr,"Fichier inexistant.\n");
      }
      else
      {
         strcpy(page_dtd,"<!ELEMENT RESULTS (RESULTSHEADER, RESULT+)>\n"
                                   "\n"
                                   "<!ATTLIST RESULTS\n "
                                   "                  VERSION CDATA "1.0"\n"
                                   ">\n"
                                   "\n"
                                   "<!ELEMENT RESULTSHEADER (VEHICLE)>\n"
                                   "\n"
                                   "<!ELEMENT RESULT (TITLE, HEADER, SECTION+)>\n"
                                   "\n"
                                   "<!ATTLIST RESULT\n"
                                   "                         OBJECT (EMISSION) #REQUIRED\n"
                                   "                 METHOD (SMOKE | SMOKE_TURBO | SMOKE_OBD) #REQUIRED\n"
                                   ">\n"
                                   "\n"
                                   "<!ELEMENT VEHICLE (IDENT)>\n"
                                   "\n"
                                   "<!ELEMENT REGISTRATION (#PCDATA)>\n"
                                   "\n"
                                   "<!ELEMENT FUEL1 (#PCDATA)>\n"
                                   "\n"
                                   "<!NOTATION TXT SYSTEM "Texte">\n"
                                   "\n"
                                   "<!ENTITY cmd_0200 SYSTEM "Texte" NDATA TXT>\n");
         fprintf(create_file_dtd,"%s",page_dtd);
      }
      fclose(create_file_dtd);
   } // fin else if
   else
   {
   printf("Type de carburant non conforme au gietnet(ES ou GO ou GL).\n");
   }
}

3 réponses

Messages postés
3813
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
12 juin 2020
109
Oups, petit problème de copier coller lors de l'envoie...
Voici ce que je voulais écrire:

      strcpy(page_xml,"<?xml version="1.0" encoding="iso-8859-1" standalone="no"?>\n"
         "<!DOCTYPE VEHICULE SYSTEM "ES_GL.dtd">\n"
         "\t<RESULTS VERSION="1.0">\n"
         "\t\t<RESULTSHEADER>\n"
         "\t\t\t<VEHICULE>\n"
         "\t\t\t\t\n"
         "\t\t\t\t\t<REGISTRATION>");
      strcat(page_xml, cmd_0200);
      strcat(page_xml,"</REGISTRATION>\n"
         "\t\t\t\t\t<FUEL1>ESS</FUEL1>\n"
         "\t\t\t\t\n"
         "\t\t\t</VEHICULE>\n"
         "\t\t</RESULTSHEADER>\n"
         "\t</RESULTS>\n");
Messages postés
3813
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
12 juin 2020
109
Tu ne dois pas mettre le nom de ta variable entre guillemets, sinon c'est considéré comme la chaîne de texte "cmd_0200".

Une solution:
strcpy(page_xml,"<?xml version="1.0" encoding="iso-8859-1" standalone="no"?>\n"
                                    "<!DOCTYPE VEHICULE SYSTEM "ES_GL.dtd">\n"
                                    "\t<RESULTS VERSION="1.0">\n"
                                    "\t\t<RESULTSHEADER>\n"
                                    "\t\t\t<VEHICULE>\n"
                                    "\t\t\t\t\n"
                                    "\t\t\t\t\t<REGISTRATIstrcpy(page_xml,"<?xml version="1.0" encoding="iso-8859-1" standalone="no"?>\n"
                                    "<!DOCTYPE VEHICULE SYSTEM "ES_GL.dtd">\n"
                                    "\t<RESULTS VERSION="1.0">\n"
                                    "\t\t<RESULTSHEADER>\n"
                                    "\t\t\t<VEHICULE>\n"
                                    "\t\t\t\t\n"
                                    "\t\t\t\t\t<REGISTRATION>cmd_0200</REGISTRATION>\n"
                                    "\t\t\t\t\t<FUEL1>ESS</FUEL1>\n"
                                    "\t\t\t\t\n"
                                    "\t\t\t</VEHICULE>\n"
                                    "\t\t</RESULTSHEADER>\n"
                                    "\t</RESULTS>\n");ON>");
                                    strcat(page_xml, cmd_0200);
                                    strcat(page_xml, "</REGISTRATION>\n"
                                    "\t\t\t\t\t<FUEL1>ESS</FUEL1>\n"
                                    "\t\t\t\t\n"
                                    "\t\t\t</VEHICULE>\n"
                                    "\t\t</RESULTSHEADER>\n"
                                    "\t</RESULTS>\n");

On peut aussi le faire à coup de sprintf.
Messages postés
5
Date d'inscription
mardi 2 décembre 2008
Statut
Membre
Dernière intervention
14 mai 2009

J'avais écris ma variable entre guillemets car je pensais pouvoir utiliser la DTD pour lui donner sa valeur.
Mais apparemment on ne peut pas....

Merci beaucoup pour ton aide CptPingu, le strcat passe niquel.