begin process at 2012 05 29 03:55:18
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Linux

 > 

Fichier & Disque

 > 

Insérer la valeur d'une variable entre deux balise XML.


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Insérer la valeur d'une variable entre deux balise XML.

mercredi 13 mai 2009 à 17:01:07 | Insérer la valeur d'une variable entre deux balise XML.

2eio

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<IDENT>\n"
                                    "\t\t\t\t\t<REGISTRATION>cmd_0200</REGISTRATION>\n"
                                    "\t\t\t\t\t<FUEL1>ESS</FUEL1>\n"
                                    "\t\t\t\t</IDENT>\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<IDENT>\n"
                                     "\t\t\t\t\t<REGISTRATION>cmd_0200</REGISTRATION>\n"
                                     "\t\t\t\t\t<FUEL1>GO</FUEL1>\n"
                                     "\t\t\t\t</IDENT>\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");
   }
}
mercredi 13 mai 2009 à 19:04:10 | Re : Insérer la valeur d'une variable entre deux balise XML.

CptPingu

Administrateur CodeS-SourceS
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<IDENT>\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<IDENT>\n"
                                    "\t\t\t\t\t<REGISTRATION>cmd_0200</REGISTRATION>\n"
                                    "\t\t\t\t\t<FUEL1>ESS</FUEL1>\n"
                                    "\t\t\t\t</IDENT>\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</IDENT>\n"
                                    "\t\t\t</VEHICULE>\n"
                                    "\t\t</RESULTSHEADER>\n"
                                    "\t</RESULTS>\n");

On peut aussi le faire à coup de sprintf.
mercredi 13 mai 2009 à 19:05:24 | Re : Insérer la valeur d'une variable entre deux balise XML.

CptPingu

Administrateur CodeS-SourceS
Réponse acceptée !
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<IDENT>\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</IDENT>\n"
         "\t\t\t</VEHICULE>\n"
         "\t\t</RESULTSHEADER>\n"
         "\t</RESULTS>\n");
jeudi 14 mai 2009 à 08:24:53 | Re : Insérer la valeur d'une variable entre deux balise XML.

2eio

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.



Cette discussion est classée dans : file, xml, path, create, dtd


Répondre à ce message

Sujets en rapport avec ce message

Xerces-C++ -- Validation XML par DTD [ par buno ] Hello les gens!Comment allez-vous? Les vacances d'hiver se sont bien passées?Si vous avez l'habitude d'utiliser Xerces comme parser XML, j'aurais beso Problème avec GetOpenFileName() [ par max12 ] Salut,J'ai un problème avec la fonction GetOpenFileName()BOOL CALLBACK ExplorerDlgProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam){    HWND [Xerces] Validation avec DTD [ par buno ] Salut les keupains!Une fois n'est pas coutume, j'aurais besoin de votre aide pour ... parser un fichier XML Tout d'abord le contexte (non modifiable): parser XML pour SVG vers OpenGL [ par RV2931 ] Bonjour à tous,J'aimerai importer un fichier SVG dans une application OpenGL. Pour cela il me faut encore et toujours un parser XML et là, j'avoue... File Mapping entre 2 programmes [ par Arkadias ] Bonjour,Je développe une application ou il sera nécessaire à 2 programmes différents (mais éxecuté sur la même machine) d'échanger les données d'un bu décrire XML sous forme de graphe [ par convexe ] Bonjour, Je suis débutant en base de données et j'aurais besoin d'une classe C++ qui permetrait de décrire les fichiers xml sous la forme de graphe , Problem Build Windows.h [ par kakenette ] Hello, je suis nouvelle dans le domaine du C++ et j'ai essayer de faire un petit programme tout simple pour voire, lors du Build(F7) je reçois cette e SAVE_AS en sortant avec la croix [ par Grorel ] Salut, Quand je quitte une fenetre dans une de mes applications, si j'ai fait un changement dans le Doc, on me demande si je veux enregistrer (jusque xmlt [ par nouveauc ] boujours à tousje developpe une application de quizz.J'utilise xml et xslt.j'apprends xml et xslt(je suis debutant).je voudrais transformer la balise TXMLDocument C++ Builder [ par omarplus ] SAlut tt le mondej'ai un problème avec la Classe "TXMLDocument":lorsque j'enregistre un document XML avec cette classe, il est enregistré dans une seu


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,827 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales