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 :

ajouter des champs dans un fichier xml existant avec dom en Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Avril 2010
    Messages : 14
    Par défaut ajouter des champs dans un fichier xml existant avec dom en Qt
    j'ai fait une petite application qui affiche le continu d'un fichier xml dans une QTableView et le modifie, pour le parser dans QTableView j'ai pas eu de pb mais je trouve pas comment ajouter des éléments dans le même fichier sans perdre les autres.

    est ce que qq1 a une idée pour que je puisse commencé, je me sent un peu perdu là,!!!
    merci pour votre aide

  2. #2
    Membre éprouvé
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur étude et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Par défaut
    Je ne sais pas si l'utilisation du QTableView pose des contraintes, mais en tout cas pour simplement modifier un fichier XML, j'ai lu ces 2 exemples :
    http://qt.developpez.com/faq/index.php?page=DOM

    Il suffit de se placer sur l'élément sur lequel tu veux ajouter des balises enfants, ou bien ajouter/modifier des attributs, et ensuite d'appeler la fonction qui fait ça.

    Pour retrouver le noeud où opérer, y'a ces fonctions où tu peux spécifier le nom de la balise, ce qui peut éviter des boucles si tu veux travailler sur un seul noeud plutôt que tous :
    http://qt.developpez.com/doc/latest/...stChildElement
    http://qt.developpez.com/doc/latest/...SiblingElement

    Et ces fonctions là pour ajouter/modifier un attribut, ou ajouter une balise enfant :
    http://qt.developpez.com/doc/latest/...l#setAttribute
    http://qt.developpez.com/doc/latest/...ml#appendChild
    (la balise sera créée par exemple avec http://qt.developpez.com/doc/latest/...#createElement)

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Avril 2010
    Messages : 14
    Par défaut
    merci, j'ai essayé de le faire mais j'ai eu un problème avec le "InsertAfter"
    voilà un extrait de mon 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
    20
    21
    22
    23
    24
    25
    26
    27
    QDomElement racine = doc.documentElement();	 
    racine = racine.firstChildElement();
    while(!racine.isNull())
    {
     
     if(racine.tagName() == "client")
    {
    QDomElement clientNode = doc.createElement("client");					
    if(insertAfter(clientNode,racine))
    {
    QDomElement nomNode = doc.createElement("nom");
    					                        nomNode.appendChild(doc.createTextNode("ptrAjout->prenom"));
    clientNode.appendChild(nomNode);
     
    QDomElement prenomNode = doc.createElement("prenom");
    					prenomNode.appendChild(doc.createTextNode("ptrAjout->prenom"));
    clientNode.appendChild(prenomNode);
     
    QDomElement telephoneNode = doc.createElement("telephone");
    					telephoneNode.appendChild(doc.createTextNode("ptrAjout->telephone"));
    clientNode.appendChild(telephoneNode);
     
    QDomElement localisationNode = doc.createElement("localisation");
    					localisationNode.appendChild(doc.createTextNode("ptrAjout->localisation"));
    clientNode.appendChild(localisationNode);
     
    racine.appendChild(clientNode);
    veuillez me signaler la faute ou de me donner une autre idée

  4. #4
    Membre éprouvé
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur étude et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Par défaut
    insertAfter (http://qt.developpez.com/doc/latest/...ml#insertAfter) est une fonction (non statique) de QDomNode, donc il faut bien sûr l'appeler à partir d'un objet QDomNode

    Je suppose que tu voulais faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    racine.insertAfter(clientNode, QDomNode());
    Je remarque aussi que tu as mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    doc.createTextNode("ptrAjout->prenom")
    // tu voudrais sûrement plutôt ça :
    doc.createTextNode(ptrAjout->prenom)

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Avril 2010
    Messages : 14
    Par défaut pb d'ajout de données dans xml
    je trouve pas comment ajouter des données dans un fichier xml avec QDom,
    j'ai arrivée à faire afficher le contenu du fichier dans un QTableView mais j'arrive pas à ajouter des données dedans:
    mon fichier xml est:
    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
    19
    20
    21
    22
    23
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <personne>
    <client>
        <nom>ben salah</nom>
        <prenom>ali</prenom>
        <telephone>22541734</telephone>
        <localisation>tunis</localisation>
    </client>
     
    <client>
        <nom>maaloul</nom>
        <prenom>nabil</prenom>
        <telephone>21025014</telephone>
        <localisation>nabeul</localisation>
    </client>
    <client>
        <nom>toto</nom>
        <prenom>jojo</prenom>
        <telephone>40538462</telephone>
        <localisation>sousse</localisation>
    </client>
     
    </personne>
    et je veux ajouter çà
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <client>
        <nom>mouradi</nom>
        <prenom>imen</prenom>
        <telephone>98952178</telephone>
        <localisation>zaghouan</localisation>
    </client>
    veuillez me donner un peu d'aide!!!

  6. #6
    Responsable Qt & Livres


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

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2008
    Messages : 26 772
    Par défaut


    Tu peux regarder la , tu devrais trouver de quoi t'aider : http://qt.developpez.com/faq/?page=QtXml
    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 !

Discussions similaires

  1. Ajouter des noeud dans un fichier XML
    Par chinoismasque dans le forum Windows Phone
    Réponses: 4
    Dernier message: 02/08/2011, 16h32
  2. Réponses: 9
    Dernier message: 18/05/2009, 08h25
  3. Ajouter des namespace dans un fichier XML
    Par Septembre84 dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 19/05/2008, 12h20
  4. Réponses: 6
    Dernier message: 05/02/2008, 22h52
  5. Réponses: 4
    Dernier message: 14/05/2007, 10h50

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