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++Builder Discussion :

G�n�ration de XML


Sujet :

C++Builder

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre exp�riment�
    Avatar de Julien.alkaza
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    239
    D�tails du profil
    Informations personnelles :
    �ge : 39
    Localisation : France, Vaucluse (Provence Alpes C�te d'Azur)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 239
    Par d�faut G�n�ration de XML
    Salut � tous et � toutes...

    Voici mon probl�me :
    J'ai un fichier XML qui est compos� comme ceci :
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    <Devices>
     
     <Device>
      <Model>HP LaserJet 4200</Model> 
      <Desc>Sv. Assurances / L.Martin</Desc> 
      <SerialNum>CNHX206189</SerialNum> 
      <PtrFirmwareVersion>04.017.3</PtrFirmwareVersion> 
      <PtrFirmwareRev>20031217</PtrFirmwareRev> 
      <IPAddr>192.6.8.66</IPAddr> 
      <HWAddr>0001E6978C50</HWAddr> 
      <CAP_INSTALLED_RAM>64</CAP_INSTALLED_RAM> 
      <JDModel>J6057A</JDModel> 
      <JDRev>R.25.15,CIDATE 05/14/2004</JDRev> 
      </Device>
     <Device>
      <Model>HP DesignJet 750C</Model> 
      <Desc>HP DesignJet 750C</Desc> 
      <IPAddr>192.6.11.210</IPAddr> 
      <HWAddr>0060B0114176</HWAddr> 
      <CAP_INSTALLED_RAM>36</CAP_INSTALLED_RAM> 
      <JDModel>J2550B</JDModel> 
      <JDRev>A.08.49</JDRev> 
      </Device>
     <Device>
      <Model>HP LaserJet 5Si</Model> 
      <Desc>HP Laserjet 5Si</Desc> 
      <SerialNum>NLQK050572</SerialNum> 
      <IPAddr>192.6.3.193</IPAddr> 
      <HWAddr>0060B09A7D56</HWAddr> 
      <JDRev>A.08.49</JDRev> 
     </Device>
    </Devices
    Je dois l'adapter � un logiciel (TrackIT) pour pouvoir l'importer. Je sais comment je dois modifier les champs. Le truc, c'est que pour chaque "device" je dois g�n�rer un fichier XML.
    Comment dois je faire pour compter le nombre de "device", et pour lire les valeurs???

    J'ai regard� les autres posts, mais j'ai pas tout compris!!!


    Merci
    P.S : j'utilise un TXMLDocument

    Julien

  2. #2
    Membre exp�riment�
    Avatar de Julien.alkaza
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    239
    D�tails du profil
    Informations personnelles :
    �ge : 39
    Localisation : France, Vaucluse (Provence Alpes C�te d'Azur)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 239
    Par d�faut
    Salut,

    Je vois que personne n'a pu r�pondre!!!
    Bon, j'ai pas mal avanc�!!!!!
    J'utilise l'expert de liaison de donn�es. J'arrive � g�n�rer le fichier type pour la r�cup�ration, et celui pour l'�criture.

    J'arrive � r�cup�rer (� l'aide des fonctions dans le fichier de l'expert) toutes les donn�es sur les imprimantes.
    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
    18
    19
    20
    21
     
    //Analyse du doc XML
    _di_IXMLDevicesType Devices = GetDevices(Doc1);
     
    nbimp = Devices->Count;
    Label4->Caption = nbimp;
    for (int i=0;i<nbimp;i++)
    {
    _di_IXMLDeviceType Device = Devices->Get_Device(i);
    model = Device->Get_Model();
    Desc = Device->Get_Desc();
    IPaddr = Device->Get_IPAddr();
    MACaddr = Device->Get_HWAddr();
    serial = Device->Get_SerialNum();
    JDmodel = Device->Get_JDModel();
    JDrev = Device->Get_JDRev();
    FirmVersion = Device->Get_PtrFirmwareVersion();
    FirmRev = Device->Get_PtrFirmwareRev();
    Ram = Device->Get_CAP_INSTALLED_RAM();
    ...
    ...
    Mais, pour r�-�crire, j'ai un doute. Voil� ce que je fais :
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    _di_IXMLWorkstationType WorkStation = NewWorkstation();
     
     
    WorkStation->Set_Number((WideString)nbvar);
    WorkStation->Set_AuditDate(200506040800);
    WorkStation->Set_CompType(0);
    WorkStation->Set_Type("baseline");
    WorkStation->Set_Name("");
    WorkStation->Set_Position("");
    WorkStation->Set_Phone("");
    WorkStation->Set_Fax("");
    WorkStation->Set_FaxExt("");
    WorkStation->Set_PhoneExt("");
    WorkStation->Set_EMail("");
    WorkStation->Set_Dept("");
    WorkStation->Set_DeptNum("");
    WorkStation->Set_Location("");
    WorkStation->Set_Network("IMPRIMANTE");
    WorkStation->Set_UserDef1(Desc);
    WorkStation->Set_UserDef2("");
    WorkStation->Set_UserDef3("");
    WorkStation->Set_UserDef4("");
    WorkStation->Set_UserDef5("");
    WorkStation->Set_UserDef6("");
    WorkStation->Set_Comment("");
    WorkStation->Set_MergePromptData("True");
    WorkStation->Set_EmployeeID("");
    WorkStation->Set_UserDef_1("");
    WorkStation->Set_UserDef_2("");
    WorkStation->Set_AuditVersion("6.0.128");
    WorkStation->Set_WorkstationGuid("");

    Mais, il y a une fonction AfterConstruction(), et je ne sais pas � quoi elle correspond (enfin, j'ai a peu pr�s compris). Mais, je n'arrive pas � l'utiliser!!!

    Comment faudrait-il faire???


    Merci


    Julien

  3. #3
    R�dacteur
    Avatar de Greybird
    Inscrit en
    Juin 2002
    Messages
    673
    D�tails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 673
    Par d�faut
    Bonjour,

    Peut �tre que cela te forcerait � revoir ton appli, mais une transformation xslt ne ferait-elle pas mieux l'affaire ?

    Cordialement,

    Arnaud

  4. #4
    Membre exp�riment�
    Avatar de Julien.alkaza
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    239
    D�tails du profil
    Informations personnelles :
    �ge : 39
    Localisation : France, Vaucluse (Provence Alpes C�te d'Azur)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 239
    Par d�faut
    Salut,

    Les fichiers que je dois g�n�rer seront ensuite import�s dans un logiciel qui veut du XML. Le truc, c'est que je ne sais pas comment il les traitent...
    Comme je l'ai dit plus haut, la r�cup�ration des infos se fait bien, mais l'�criture buggue!!!!!!!

    En fait, j'arrive � g�n�rer les fichiers, mais ils sont vides!!!!
    Je suppose que c'est le "AfterConstruction()" qui ferait fonctionner le tout!!!


    Merci

    Julien

  5. #5
    Membre exp�riment�
    Avatar de Julien.alkaza
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    239
    D�tails du profil
    Informations personnelles :
    �ge : 39
    Localisation : France, Vaucluse (Provence Alpes C�te d'Azur)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 239
    Par d�faut
    Ca y est, j'ai r�ussi!!!!!
    Donc, en utilisant l'expert de liaison de donn�es XML, on peut utiliser les fonctions qu'il a g�n�r�.
    En gros, pour mon cas (r�cup�ration de donn�es dans un fichier, puis insertion dans un autre), j'ouvre le premier fichier et le second :


    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     
    CoInitialize (NULL);
    Doc1->LoadFromFile(OpenDialog1->FileName);
    Doc1->Active = true;
    Doc2->LoadFromFile(Doc2->FileName);
    Doc2->Active = true;
    Ensuite il faut lire les donn�es dans le premier fichier

    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
    18
    19
    20
    21
     
    //Analyse du doc XML
    _di_IXMLDevicesType Devices = GetDevices(Doc1);
     
    nbimp = Devices->Count; //On compte le nombre d'imprimantes
    Label4->Caption = nbimp;
    //Récupération des info de chaque imp, et ajout dans un nouveau fichier
    for (int i=0;i<nbimp;i++)
    {
    _di_IXMLDeviceType Device = Devices->Get_Device(i);//on récupère l'imp n°i
    //On charge les infos.
    model = Device->Get_Model();
    Desc = Device->Get_Desc();
    IPaddr = Device->Get_IPAddr();
    MACaddr = Device->Get_HWAddr();
    serial = Device->Get_SerialNum();
    JDmodel = Device->Get_JDModel();
    JDrev = Device->Get_JDRev();
    FirmVersion = Device->Get_PtrFirmwareVersion();
    FirmRev = Device->Get_PtrFirmwareRev();
    Ram = Device->Get_CAP_INSTALLED_RAM();
    On charge le second :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    //Chargement du deuxième fichier (écriture)
    _di_IXMLWorkstationType WorkStation = GetWorkstation(Doc2);
    On ins�re les infos :
    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
    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
    //Enregistrement des noeuds.
    AfterConstruction();
    //Renseignement des champs pour workstation
    WorkStation->Set_Number((WideString)nbvar);
    WorkStation->Set_AuditDate(200506040800);
    WorkStation->Set_CompType(0);
    WorkStation->Set_Type("baseline");
    WorkStation->Set_Name("");
    WorkStation->Set_Position("");
    WorkStation->Set_Phone("");
    WorkStation->Set_Fax("");
    WorkStation->Set_FaxExt("");
    WorkStation->Set_PhoneExt("");
    WorkStation->Set_EMail("");
    WorkStation->Set_Dept("");
    WorkStation->Set_DeptNum("");
    WorkStation->Set_Location("");
    WorkStation->Set_Network("IMPRIMANTE");
    WorkStation->Set_UserDef1(Desc);
    WorkStation->Set_UserDef2("");
    WorkStation->Set_UserDef3("");
    WorkStation->Set_UserDef4("");
    WorkStation->Set_UserDef5("");
    WorkStation->Set_UserDef6("");
    WorkStation->Set_Comment("");
    WorkStation->Set_MergePromptData("True");
    WorkStation->Set_EmployeeID("");
    WorkStation->Set_UserDef_1("");
    WorkStation->Set_UserDef_2("");
    WorkStation->Set_AuditVersion("6.0.128");
    WorkStation->Set_WorkstationGuid("");
     
    //on récupère les infos pour le noeud hardware
    _di_IXMLHardwareType HardWare = WorkStation->Get_Hardware();
    AfterConstruction();
    //on récupère les infos pour le noeud computer
    _di_IXMLComputerType Computer = HardWare->Get_Computer();
     
    //Renseignement des champs pour computer
    Computer->Set_Name(serial);
    Computer->Set_Model(model);
    Computer->Set_ServiceTag(IPaddr);
     
    _di_IXMLMemoryType Memory = HardWare->Get_Memory();
     
    Memory->Set_Quantity(Ram+"000000");
     
    _di_IXMLOperatingSystemType OS = HardWare->Get_OperatingSystem();
     
    OS->Set_Version(FirmVersion);
    OS->Set_ServicePack(FirmRev);


    Et ensuite on enregistre :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    Doc2->SaveToFile(IntToStr(nbvar)+".xml");
    Voil�, les types sont ceux d�finis dans les fichiers g�n�r�s par l'expert.

    Ca marche nickel.. Pour plus d'info ==>MP


    Julien[/code]

  6. #6
    R�dacteur
    Avatar de Greybird
    Inscrit en
    Juin 2002
    Messages
    673
    D�tails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 673
    Par d�faut
    Citation Envoy� par Julien.alkaza
    Salut,

    Les fichiers que je dois g�n�rer seront ensuite import�s dans un logiciel qui veut du XML. Le truc, c'est que je ne sais pas comment il les traitent...
    Pour information, le xslt prend un XML en entr�e, et produit ce que l'on veut en sortie, dont du XML par exemple, et ce tr�s facilement.

    Mais si tu y es arriv�...

    Arnaud

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [XML] G�n�ration fichier XML pour RSS via PHP, probl�me lors de l'�criture
    Par gator dans le forum Biblioth�ques et frameworks
    R�ponses: 10
    Dernier message: 04/02/2012, 18h17
  2. [Excel] g�n�ration d'XML
    Par charliejo dans le forum XML/XSL et SOAP
    R�ponses: 2
    Dernier message: 16/01/2007, 15h24
  3. g�n�ration de xml par flash
    Par Catalan dans le forum Flash
    R�ponses: 1
    Dernier message: 12/01/2007, 04h33
  4. [DOM] G�n�ration de XML tout pas beau :(
    Par scorpiwolf dans le forum Biblioth�ques et frameworks
    R�ponses: 6
    Dernier message: 23/05/2006, 15h49
  5. [LOMBOZ]G�n�ration WEB.XML
    Par JWillow dans le forum Eclipse Java
    R�ponses: 1
    Dernier message: 14/12/2004, 23h54

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