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 :

Créer un formulaire selon un fichier XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 47
    Par défaut Créer un formulaire selon un fichier XML
    Bonjour,

    Comme indique le titre j'aimerais lier XML et Qt Creator.
    Je voudrais élaborer un fichier XML depuis Qt.

    Application graphique :
    Nom : dialog.png
Affichages : 655
Taille : 61,3 Ko

    Voici le bouton pour l'enregistrer sous format XML :
    Nom : Capture du 2018-03-20 10-45-08.png
Affichages : 606
Taille : 80,8 Ko

    Le voici dans le .cpp :
    Nom : Capture du 2018-03-20 10-47-58.png
Affichages : 627
Taille : 63,6 Ko

    Fichier XSD :
    Nom : xsd.png
Affichages : 867
Taille : 86,6 Ko

    Fichier XML :
    Nom : xml.png
Affichages : 590
Taille : 34,2 Ko

    Le fichier est réalisé depuis un logiciel nommé Editix, maintenant je voudrais faire de même depuis Qt Creator avec les valeurs choisi préalablement depuis les Thermo (1ere image)

    Savez-vous comment faire ?

    Merci

  2. #2
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    248
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2010
    Messages : 248
    Par défaut
    Bonjour,

    Le fomat du fichier XML peut être validé en utilisant les classes QXmLSchema et QXmlSchemaValidator . Un exemple est disponible XML Schema Validation Example

    Ensuite pour créer un fichier XML depuis Qt, il y a plusieurs possibilités comme QXmlStreamWriter ou QDomDocument.

    Dans votre cas, QXmlStreamWriter devrait être suffisant.

    Voici un exemple :
    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
        QFile output("test.xml");
        if(output.open(QFile::WriteOnly)){
            QXmlStreamWriter stream(&output);
            stream.setAutoFormatting(true);
            stream.writeStartDocument();
     
            //SUPREM
            stream.writeStartElement("SUPREM");
            stream.writeAttribute("xsi:noNamespaceSchemaLocation", "C:\\Path\\to\\file.xsd");
            //Valeurs
            stream.writeStartElement("Valeurs");
            stream.writeTextElement("RF", QString::number(qrand() % 256));
            stream.writeTextElement("MPX", QString::number(qrand() % 256));
            stream.writeTextElement("Pilot", QString::number(qrand() % 256));
            stream.writeTextElement("RDS", QString::number(qrand() % 256));
            stream.writeTextElement("AG", QString::number(qrand() % 256));
            stream.writeTextElement("AD", QString::number(qrand() % 256));
            stream.writeTextElement("Tension", QString::number(qrand() % 256));
            stream.writeTextElement("Frequence", QString::number(qrand() % 65536));
            stream.writeEndElement(); // Valeurs
            stream.writeEndElement(); // SUPREM
     
            stream.writeEndDocument();
        }
        output.flush();
        output.close();
    Le résultat.
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?xml version="1.0" encoding="UTF-8"?>
    <SUPREM xsi:noNamespaceSchemaLocation="C:\Path\to\file.xsd">
        <Valeurs>
            <RF>41</RF>
            <MPX>35</MPX>
            <Pilot>190</Pilot>
            <RDS>132</RDS>
            <AG>225</AG>
            <AD>108</AD>
            <Tension>214</Tension>
            <Frequence>29358</Frequence>
        </Valeurs>
    </SUPREM>

  3. #3
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    248
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2010
    Messages : 248
    Par défaut
    Pour relire le contenu du fichier XML depuis Qt, voici une méthode possible avec QStreamXmlReader:

    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
    QFile input("test.xml");
        if(input.open(QFile::ReadOnly)){
            QXmlStreamReader stream(&input);
            stream.addExtraNamespaceDeclaration(QXmlStreamNamespaceDeclaration("xsi", "noNamespaceSchemaLocation"));
            QTextStream out(stdout);
            if (stream.readNextStartElement()) {
                if (stream.name() == "SUPREM"){
     
     
                    QStringRef xsiNoNamespaceSchemaLocation = stream.attributes().value("xsi:noNamespaceSchemaLocation");
     
                    bool documentIsValid = true;
                    /*
                    //Validation avec le fichier xsd si nécessaire.
                    QXmlSchema schema;
                    schema.load(xsiNoNamespaceSchemaLocation.toLatin1());
     
                    if (schema.isValid()) {
                        QFile file("test.xml");
                        file.open(QIODevice::ReadOnly);
     
                        QXmlSchemaValidator validator(schema);
                        if (validator.validate(&file, QUrl::fromLocalFile(file.fileName()))){
                            qDebug() << "instance document is valid";
                        } else {
                            out << "Schéma XML invalide";
                            documentIsValid = false;
                        }
                    } else out << "Fichier XSD invalide";
                    */
     
                    if(documentIsValid){
                        if(stream.readNextStartElement()) {
                            if (stream.name() == "Valeurs"){
                                while(stream.readNextStartElement()){
     
                                    //Affichage de tous les éléments contenus dans "Valeurs"
                                    out << stream.name() << ": " << stream.readElementText() << endl;
                                }
     
                            } else out << "Elément \"Valeurs\" manquant";
                        } else out << "Format de fichier incorrect";
                    }
                } else out << "Elément \"SUPREM\" manquant";
     
            }
            if (stream.hasError()) {
                out << "Error: " << stream.errorString();
            }
        }
     
        input.close();
    sortie console:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    RF: 41
    MPX: 35
    Pilot: 190
    RDS: 132
    AG: 225
    AD: 108
    Tension: 214
    Frequence: 29358

  4. #4
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 47
    Par défaut
    Ce programme je le mets dans quel méthode ?

    Enfin je veux dire que j'ai un Pushbouton "ButtonXML", je mets le programme dans cette méthode ?
    Dans ce cas lors de l'appui sur ce bouton, je peux l'enregistrer sous format XML.

    Et oui j'avais pensés à QDomDocument ou QXmlStreamWriter mais je savais pas lequel utiliser.

  5. #5
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    248
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2010
    Messages : 248
    Par défaut
    Oui par exemple lorsque le bouton "Exporter XML" est cliqué, à vous de voir comment vous voulez implémenter cela.

    N'hésitez pas à essayer les projets exemples de Qt afin de mieux comprendre le fonctionnement de certaines classes. Je pense qu'il y en a plusieurs disponible concernant QDomDocument et QXmlStreamWriter. La doc contient souvent aussi pas mal d'extraits de code assez explicites.

  6. #6
    Invité de passage
    Homme Profil pro
    programmation
    Inscrit en
    Mars 2018
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : programmation

    Informations forums :
    Inscription : Mars 2018
    Messages : 1
    Par défaut remerciements
    Bonjour a vous membres du forum club.
    j'aimerai vous remercier pour l'accès a vôtre site que vous m'avez offert.
    Nouveau en programmation informatique ( langageC++) que je suis, cette adhésion m'ouvrira énormément les yeux sur les procédures d'utilisation des langages de programmation. Pour ce fait, j'ai énormément besoin de vôtre soutien et éclaircissements!

Discussions similaires

  1. InstallShield Pro 2010 : créer un DSN et un fichier XML
    Par devuranie dans le forum Autres Solutions d'entreprise
    Réponses: 0
    Dernier message: 01/02/2011, 15h30
  2. Créer une table oracle via fichier XML
    Par karync dans le forum Pentaho
    Réponses: 2
    Dernier message: 01/10/2010, 11h32
  3. [JDOM] création dynamique d'un formulaire correspondant à un fichier XML
    Par sissi25 dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 28/05/2008, 16h03
  4. Formulaire rempli par fichier XML
    Par abronsius dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 22/04/2007, 20h41

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