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 :

TXMLDocument, un petit problème de rien du tout!


Sujet :

C++Builder

  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 TXMLDocument, un petit problème de rien du tout!
    Bonsoir tout le monde.
    Depuis que j'ai résolu mon précédent problème, à savoir la création d'un fichier XML non vide, je me heure a un second souci. J'aimerais généré un fichier xml qui serais ainsi constituer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?xml version="1.0" encoding="UTF-8"?>
    <JDR>
          <Jeu>
                <Jeu Nom="Talundra"/>
                <Jeu Concepteur="Elibom"/>
          <Jeu/>
    </JDR>
    Pour le moment, j'arrive avec le bout de code qui suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
            //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 Balise;
            Balise = Form1->XMLDocument1->CreateNode(WideString("JDR"));
                    Balise->ChildNodes->Add(Form1->XMLDocument1->AddChild(WideString("Jeu")));
     
            Form1->XMLDocument1->ChildNodes->Add(Balise);
    à générer le fichier XML suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <?xml version="1.0" encoding="UTF-8"?>
    <JDR>
          <Jeu/>
    </JDR>
    Le principal problème c'est que je n'arrive pas à ajouter au noeud Jeu la suite des informations. Quelqu'un aurait il une idée à me soumettre pour y arrivé, ou le cas échéant, une piste à explorer .
    Merci.

  2. #2
    Membre éclairé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    934
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 934
    Par défaut
    Tu fait comme ça

    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
     
    #include <vlc.h>
     
    // 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éation du noeud JDR
    _di_IXMLNode NoeudJDR;
    NoeudJDR = Form1->XMLDocument1->CreateNode(WideString("JDR"));
     
    // Création du noeud JEU fils du noeud JDR
    _di_IXMLNode NoeudJeu;
    NoeudJeu = Form1->XMLDocument1->CreateNode(WideString("Jeu"));
     
    // Création du noeud Jeu Nom noeud fils du noeud JEU
    _di_IXMLNode NoeudJeuNom;
    NoeudJeuNom = Form1->XMLDocument1->CreateNode(WideString("Jeu"));
     
    // On ajoute la propriété NOM à ce moeud
    NoeudJeuNom->SetAttribute(WideString("Nom"), WideString("Talundra"));
     
    // On ajoute le noeud Jeu Nom comme noeud fils du noeud Jeu
    NoeudJeu->ChildNodes->Add(NoeudJeuNom);
     
     
    // Création du noeud Jeu Concepteur noeud fils du noeud JEU
    _di_IXMLNode NoeudJeuConcepteur;
    NoeudJeuConcepteur = Form1->XMLDocument1->CreateNode(WideString("Jeu"));
     
    // On ajoute la propriété Concepteur à ce moeud
    NoeudJeuConcepteur->SetAttribute(WideString("Concepteur"), WideString("Elibom"));
     
    // On ajoute le noeud Jeu Concepteur comme noeud fils du noeud Jeu
    NoeudJeu->ChildNodes->Add(NoeudJeuConcepteur);
     
    // On ajoute le noeud Jeu comme noeud fils du noeud JDR
    NoeudJDR->ChildNodes->Add(NoeudJeu);
     
    // On ajoute le noeud JDR comme noeud racine du document XML
    Form1->XMLDocument1->ChildNodes->Add(NoeudJDR);
    Par contre je vois pas l'intérêt de créer un noeud Jeu, et ensuite de créer pour chaque attributs de ton Jeu, un noeud fils jeu avec un attribut.

    Pourquoi ne metterais-tu pas tes attributs directement dans ton noeud Jeu

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <?xml version="1.0" encoding="UTF-8"?>
    <JDR>
          <Jeu Nom="Talundra" Concepteur="Elibom"><Jeu/>
    </JDR>

  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
    Et si tu ajoute une description de 100 lignes par exemple?. ta méthode fonctionnera ?
    Moi je voyais bien un truc dans le genre:
    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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <JDR>
          <Jeu>
              <Jeu Nom="Talundra"/>
              <Jeu Concepteur="Elibom"/>
              <Jeu Desciption>
                    100 lignes de textes de description
              <Jeu Desciption>
          <Jeu/>
          <Jeu>
              <Jeu Nom="Arak Aram"/>
              <Jeu Concepteur="Sephiroth 2000"/>
              <Jeu Desciption>
                    100 lignes de textes de description
              <Jeu Desciption>
          <Jeu/>
          etc...
    </JDR>

  4. #4
    Membre éclairé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    934
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 934
    Par défaut
    J'ai jamais testé avec un contenu aussi grand.

    Mais tu peux essayer en faisant ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    // Création du noeud Jeu Description noeud fils du noeud JEU
    _di_IXMLNode NoeudJeuDescription;
    NoeudJeuDescription = Form1->XMLDocument1->CreateNode(WideString("Jeu Description"));
     
    AnsiString Description = "100 lignes de textes de description";
     
    // On renseigne la valeur du noeud
    NoeudJeuConcepteur->SetNodeValue(Description);
     
    // On ajoute le noeud Jeu Description comme noeud fils du noeud Jeu
    NoeudJeu->ChildNodes->Add(NoeudJeuDescription);
    Ensuite à toi d'adapter pour que cela te construire tous tes noeuds jeux.
    Par contre si tu as des retours à la ligne dans ton texte, je ne sais pas comment cela se passe

  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
    Effectivement, il y a des retours à la ligne.
    Autre fois j' utilisait les fichiers ini mais hélas une ligne est déjà pas mal limité alors 100 lignes avec des saut dedans. Donc seule possibilités c'est de passé par un xml qui lui n'apparait pas limité en terme de ligne et de saut de ligne.
    Voila pourquoi je compte passé par ce composant.

  6. #6
    Membre éclairé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    934
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 934
    Par défaut
    Je comprend bien

    Ecoute teste mais la je peux pas te dire ce que ca va sortir avec des "\n" dans le texte.

    Ou alors il faut faire un noeud par ligne, mais ca va vite devenir ingérable.

  7. #7
    Membre éclairé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    934
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 934
    Par défaut
    Je viens de me rappeler, j'avais fait un logiciel qui pouvait avoir un affichage en plusieurs langues, et qui utilisait des fichiers XML pour les langes.
    Dans ces fichiers j'ajoutais des textes avec \n.

    Il fallait corriger ces chaines une fois extraite de l'XML pour que cela soit affiché correctement et j'utilisais cette fonction. De mémoire mais ça remonte, cela doit être sur ce forum qu'on m'avait expliqué comment faire.

    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
     
    // Méthode charger de corrigé les retour à la ligne d'une chaine
    AnsiString CorrigerRetourALaLigne(AnsiString Chaine)
    {
            // Caractère \n
            AnsiString Car = "\\n";
     
            // Caractère retour charriot
            char LF = 10;
     
            // Flag
            TReplaceFlags Flags = Flags << rfReplaceAll;
     
            // On retourne la chaine modifié
            return StringReplace(Chaine, Car, LF, Flags);
    }

  8. #8
    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
    Ah wai, sympa!
    Ceci dit, je me rend un peu compte que c'est un poil compliqué à gérer.
    Enfin je garde ca sous le coude au cas ou!

  9. #9
    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 ca ne fonctionne pas d'un poil
    Je ne sort qu'un niveau avec mon code.
    Donc je suis bon pour reprendre tout à 0!
    Si au moins, je pouvais enregistrer ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <Jeu>
        <Jeu Nom="Talundra" />
        <Jeu Description>
               bla bla bla
        </Jeu Description>
    </Jeu>
    Déja j'aurais avancer un peu.
    Ensuite comment fonctionne une lecture pour afficher ces données dans des champs ?
    Comment se comporte les modifications en vue d'un nouvel enregistrement dans le même fichier, genre je change Talundra pour Cocorico?
    Je vous remerci pour vos précisions.
    Cordialement

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 05/11/2007, 15h03
  2. Petit prob de rien du tout :)
    Par marie4449 dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 08/03/2007, 14h46
  3. [IE-FF]Un tout petit problème, mais très énervant.
    Par Woodgate dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 22/02/2007, 23h37
  4. Réponses: 4
    Dernier message: 15/10/2006, 18h05

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