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 :

[BCB6] TXMLDocument - Fichier xml vide!


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Caxton
    Homme Profil pro
    Sans
    Inscrit en
    Janvier 2005
    Messages
    586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Janvier 2005
    Messages : 586
    Par défaut [BCB6] TXMLDocument - Fichier xml vide!
    Bonjour tout le monde.
    Je m'interroge sur le pourquoi de la création d'un fichier xml vide. En gros mon fichier est vide, 0 octet

    En scrutant les exemples de créations puis de lecture, j'ai tenter de faire un fichier qui ressemble à ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <...déclaration...>
    <RPG>
          <Talundra>
                <Concepteur>Elibom</Concepteur>
                <Date>25/06/2009</Date>
          </Talundra>
          <Deolia>
                <Concepteur>Elibom</Concepteur>
                <Date>25/06/2009</Date>
          </Deolia>
    </RPG>
    Bien sur j'ai d'autres "fiches" (noeuds) qui doivent au fur et à la mesure se créer avec un nouveau concepteur.

    Pour faire ma tentative, je me suis inspiré des liens: http://www.developpez.net/forums/d36...e-fichier-xml/ et http://www.developpez.net/forums/d26...txmldocumment/

    Toutefois j'ai fait ce code:
    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
     
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
            //Créer un fichier xml
            Form1->XMLDocument1->Active = true;  // Activer le document avant d'écrire dedans
            // Créer un noeud
            _di_IXMLNode Noeud;
            Noeud = Form1->XMLDocument1->CreateNode(WideString("RPG"));
                    // Créer un noeud
                    Noeud = Form1->XMLDocument1->CreateNode(WideString("Talundra"));
     
     
            //Enregistre le fichier xml
         Form1->XMLDocument1->SaveToFile(ExtractFilePath(Application->ExeName)+"\\TestXml.xml");
     
            //Vider un objet TXMLDocument
            Form1->XMLDocument1->XML->Clear();
     
    }
    Je serais assez content si je pouvais avoir un peu d'aide.
    Merci

  2. #2
    Membre Expert
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Par défaut
    Salut, essaie ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        _di_IXMLNode Noeud;
        Noeud = XMLDocument1->CreateNode(WideString("RPG"));
        // Créer un noeud
        Noeud = Noeud->CreateNode(WideString("Talundra"));
    PS: J'ai pas tester le code, j'ai jamais écris dans un fichier XML. Par contre j'e suis capable de les lire: http://www.developpez.net/forums/d72...t/#post4228694

  3. #3
    Membre éclairé Avatar de Caxton
    Homme Profil pro
    Sans
    Inscrit en
    Janvier 2005
    Messages
    586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Janvier 2005
    Messages : 586
    Par défaut
    Citation Envoyé par Crayon Voir le message
    Salut, essaie ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        _di_IXMLNode Noeud;
        Noeud = XMLDocument1->CreateNode(WideString("RPG"));
        // Créer un noeud
        Noeud = Noeud->CreateNode(WideString("Talundra"));
    PS: J'ai pas tester le code, j'ai jamais écris dans un fichier XML. Par contre j'e suis capable de les lire: http://www.developpez.net/forums/d72...t/#post4228694
    J'ai déjà essayer, sans succès!

  4. #4
    Membre Expert
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Par défaut
    Fais une exécution pas-à-pas et regarde si c'est possible de d'aller sur le deuxième CreateNode:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        _di_IXMLNode Noeud;
        Noeud = XMLDocument1->CreateNode(WideString("RPG"));
        if(Noeud != NULL)
        {
            Noeud = Noeud->CreateNode(WideString("Talundra"));
        }

  5. #5
    Membre éclairé Avatar de Caxton
    Homme Profil pro
    Sans
    Inscrit en
    Janvier 2005
    Messages
    586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Janvier 2005
    Messages : 586
    Par défaut
    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
     
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
            //Créer un fichier xml
            Form1->XMLDocument1->Active = true;  // Activer le document avant d'écrire dedans
     
            //Crée un déclaratif
            Form1->XMLDocument1->Version = "1.0";
            Form1->XMLDocument1->Encoding = "UTF-8";
     
            _di_IXMLNode Noeud;
            Noeud = XMLDocument1->CreateNode(WideString("RPG"));
            if(Noeud != NULL)
            {
                    Noeud = Noeud->CreateNode(WideString("Talundra"));
            }
     
     
            //Enregistre le fichier xml
            Form1->XMLDocument1->SaveToFile(ExtractFilePath(Application->ExeName)+"\\TestXml.xml");
     
            //Vider un objet TXMLDocument
            Form1->XMLDocument1->XML->Clear();
     
    }
    1) Si je tape tel que, je tombe sur le message d'erreur suivant:
    [C++ Erreur] TestXml.cpp(49): E2316 'CreateNode' n'est pas un membre de 'IXMLNode'
    -------------------------------------------------------------------------
    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
     
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
            //Créer un fichier xml
            Form1->XMLDocument1->Active = true;  // Activer le document avant d'écrire dedans
     
            //Crée un déclaratif
            Form1->XMLDocument1->Version = "1.0";
            Form1->XMLDocument1->Encoding = "UTF-8";
     
            _di_IXMLNode Noeud;
            Noeud = Form1->XMLDocument1->CreateNode(WideString("RPG"));
            if(Noeud != NULL)
            {
                    Noeud = Noeud->CreateNode(WideString("Talundra"));
            }
     
     
            //Enregistre le fichier xml
            Form1->XMLDocument1->SaveToFile(ExtractFilePath(Application->ExeName)+"\\TestXml.xml");
     
            //Vider un objet TXMLDocument
            Form1->XMLDocument1->XML->Clear();
     
    }
    2) Si je modifie pour aller à la seconde ligne, j'ai le message suivant:
    [C++ Erreur] TestXml.cpp(49): E2316 'CreateNode' n'est pas un membre de 'IXMLNode'
    Donc cela ne m'avance à ren, si je puis me permettre!
    Cordialement.

  6. #6
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    Salut Elibom
    En me basant sur les liens fournis, j'ai teste ceci qui semble ecrire dans le 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
    22
     
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
            //Créer un fichier xml
            Form1->XMLDocument1->Active = true;  // Activer le document avant d'écrire dedans
            //Crée un déclaratif
            Form1->XMLDocument1->Version = "1.0";
            Form1->XMLDocument1->Encoding = "UTF-8";
     
       // Créer un noeud
       _di_IXMLNode Noeud;
       Noeud = XMLDocument1->CreateNode(WideString("Noeud1"));
       // Ajouter un attribut a ce noeud
       Noeud->SetAttribute(WideString("Attribut1"), WideString("Valeur"));
       // On ajoute le noeud (ici ce sera la racine, sinon
       // tu appels ChildNodes->Add() du noeud auquel tu veux l'ajouter
      XMLDocument1->ChildNodes->Add(Noeud);
            //Enregistre le fichier xml
          Form1->XMLDocument1->SaveToFile(ExtractFilePath(Application->ExeName)+"<a href="file://\\TestXml.xml" target="_blank">\\TestXml.xml</a>");
            //Vider un objet TXMLDocument
            Form1->XMLDocument1->XML->Clear();
    }

  7. #7
    Membre éclairé Avatar de Caxton
    Homme Profil pro
    Sans
    Inscrit en
    Janvier 2005
    Messages
    586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Janvier 2005
    Messages : 586
    Par défaut
    Bon et bien j'ai un peu avancé,
    J'arrive à faire un fichier qui contient:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?xml version="1.0" encoding="UTF-8"?>
    mais le reste, j'ai beau essayer, n'apparaît pas!

    Voici mon bout de code.
    C'est vrai que j'ai retirer le bout de code qui suit car il me provoque des erreurs.
    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
     
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
            //Créer un fichier xml
            Form1->XMLDocument1->Active = true;  // Activer le document avant d'écrire dedans
     
            //Crée un déclaratif
            Form1->XMLDocument1->Version = "1.0";
            Form1->XMLDocument1->Encoding = "UTF-8";
     
            //La suite du code que je n'ai pas su faire...
     
     
            //Enregistre le fichier xml
          Form1->XMLDocument1->SaveToFile(ExtractFilePath(Application->ExeName)+"\\TestXml.xml");
     
            //Vider un objet TXMLDocument
            Form1->XMLDocument1->XML->Clear();
    }
    Si vous avez une petite idée, une piste.
    Merci.

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

Discussions similaires

  1. [SAX] Identifier un fichier XML vide (0 caractère) ?
    Par ghohm dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 02/08/2010, 15h16
  2. Sérialisation xml : fichier xml vide
    Par casafa dans le forum C#
    Réponses: 1
    Dernier message: 25/04/2007, 15h13
  3. génération automatique de fichier xml vide
    Par ecdxml dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 03/07/2006, 10h57
  4. Déduire un fichier XML vide à partir d'un XSD
    Par wozzz dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 21/04/2006, 11h04

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