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

Discussion :

Récupérer le contenu d'un fichier XML dans une structure

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2018
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2018
    Messages : 73
    Points : 77
    Points
    77
    Par défaut Récupérer le contenu d'un fichier XML dans une structure
    Bonjour,

    Je souhaiterai récupérer le contenu d'un fichier XML dans une structure sous Qt4, pour pouvoir utiliser les paramètres qui s'y trouvent ultérieurement dans le code.
    J'ai créé une classe xml qui me permet de lire le contenu de mon fichier en me basant sur ce tuto https://qt.developpez.com/tutoriels/qtxml/

    Quelqu'un aurait des indications qui me permettront de mettre ce contenu dans une structure ?

    Je vous remercie

  2. #2
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 618
    Points : 188 591
    Points
    188 591
    Par défaut


    Quel est ton problème, en fait ? Tu récupères un objet QString, par exemple avec attribute(), puis tu stockes cette valeur dans ta structure, comme tu y mettrais un entier.
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2018
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2018
    Messages : 73
    Points : 77
    Points
    77
    Par défaut
    Oui ! c'est exactement ça !

    J'ai trouvé ce PDF (http://195.221.61.190/ent/public/201...fichierxml.pdf ) qui explique comment manipuler les xml en Qt, dès que j'avance sur mon code, je le partage ici.

  4. #4
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2018
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2018
    Messages : 73
    Points : 77
    Points
    77
    Par défaut
    Bonjour ,

    Alors j'ai un peux avancé sur le sujet, mais j'arrive à lire et mettre dans une structure que le texte des éléments du fichier XML, par contre pour les attributs je ne sais pas comment faire ! et je ne trouve pas beaucoup de documentation sur la manipulation de fichier XML complexes.

    Pour comprendre plus ce que je veux faire, voici mon code qui me permet de lire un fichier xml simple :

    Code C++ (main.cpp) :
    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
    53
    54
    55
    56
    57
    58
    59
    #include <QCoreApplication>
    #include <QString>
    #include <iostream>
    #include <QFile>
    #include <QDomDocument>
     
    QString enfan1;
    QString enfant2;
    QString nombres;
     
     
    using namespace std;
     
    struct Famille {
      QString enfant1;
      QString enfant2;
      QString enfant3;
      QString nombres;
    } ;
     
     
    int main(int argc, char *argv[])
    {
        QCoreApplication a(argc, argv);
     
        QDomDocument doc;
        QFile file("famille.xml");
     
        if (!file.open(QIODevice::ReadOnly) || !doc.setContent(&file))  //attribuer le fichier xml à l'objet QDocument et s'assurer qu'il est bien ouvert
            return a.exec();
     
        QDomNodeList parents = doc.elementsByTagName("parent");
     
        Famille parent;
        for (int i = 0; i < parents.size(); i++) {
     
            QDomNode n = parents.item(i);
            QDomElement enfant1 = n.firstChildElement("enfant1");
            QDomElement enfant2 = n.firstChildElement("enfant2");
            QDomElement enfant3 = n.firstChildElement("enfant3");
            QDomElement nombres = n.firstChildElement("nombres");
     
     
            parent.enfant1 =  enfant1.text();
            parent.enfant2 =  enfant2.text();
            parent.enfant3 =  enfant3.text();
            parent.nombres =  nombres.text();
     
            cout << parent.enfant1.toStdString() << endl;
            cout << parent.enfant2.toStdString() << endl;
            cout << parent.enfant3.toStdString() << endl;
            cout << parent.nombres.toStdString() << endl;
        }
       // cout << parent.enfant1.toStdString() << endl;
        //cout << parent.enfant2.toStdString() << endl;
       // cout << parent.nombres.toStdString() << endl;
     
        return a.exec();
    }
    Fichier XML :
    Code XML : 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
    <parents>  
      <parent>
        <enfant1>Toto</enfant1>
        <enfant2>Jean</enfant2>
        <nombres>2</nombres>
      </parent> 
      <parent>
        <enfant1>Toto1</enfant1>
        <enfant2>Jean1</enfant2>
        <nombres>2</nombres>
      </parent>
       <parent>
        <enfant1>Toto2</enfant1>
        <enfant2>Jean2</enfant2>
        <enfant3>Sara</enfant3>
        <nombres>3</nombres>
      </parent>
    </parents>

    Vous remarquez que le document XML est simple, moi je souhaiterais lire et mettre dans ma structure différents attributs que peut avoir un élément, par exemple le fichier XML ci-dessous :

    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <parents id1="x" version="1.0">
    	<parent id2="1" nombre="2">
                    <enfant id="1" genre="XY" age="10"/>
    		<enfant id="2" genre="XY" age="15"/>
    		<enfant id="3" genre="XX" age="16"/>      
    	</parent>
    </parents>

    Des idées sur ce point ?

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2018
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2018
    Messages : 73
    Points : 77
    Points
    77
    Par défaut
    Bonjour

    J'ai fait comme vous m'aviez dit dourouc05 et j'ai réussi, on peut lire les attributs de n'importe quel balise en utilisant cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QString attribut=doc.attribute("attribut");
    Je vous remercie

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

Discussions similaires

  1. Charger le contenu d'un fichier XML dans une table via BULK
    Par sylk77 dans le forum Développement
    Réponses: 1
    Dernier message: 16/07/2019, 09h57
  2. Réponses: 3
    Dernier message: 11/07/2019, 20h04
  3. Réponses: 3
    Dernier message: 26/01/2009, 20h31
  4. Récupérer le contenu d'un fichier texte dans une variable
    Par heureactuelle dans le forum MATLAB
    Réponses: 2
    Dernier message: 17/05/2008, 15h10
  5. [JDOM] [Debutant] charger le contenu d'un fichier XMl dans un String
    Par apoca dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 17/10/2007, 18h24

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