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++ Discussion :

Parser un XML en C++


Sujet :

C++

  1. #1
    Membre habitu�
    Homme Profil pro
    �tudiant
    Inscrit en
    Mars 2015
    Messages
    11
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 34
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 11
    Par d�faut Parser un XML en C++
    Bonjour,

    Je suis confront� � un probl�me assez complexe (malgr� le titre simpliste de mon sujet). Voici ma situation. J'ai un fichier XML sous la forme :

    Code xml : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <segment>
    	<id>1</id>
    	<from-ms>0</from-ms>
    	<to-ms>1000</to-ms>
    	<name>Music</name>
    </segment>
    <segment>
    ...
    ...
    </segment>
    ...
    ...

    Et mon objectif c'est de r�cup�rer toutes les dur�es de chaque segment (donc 1000-0=1000 par exemple), donc de r�cup�rer la soustraction de chaque <to-ms> avec son <from-ms>. Car en fait, si un segment fait moins de 2 secondes, je dois l'ajouter dans le suivant enfin bref je dois modifier le fichier XML.

    Alors j'ai essay� avec TinyXML mais �a ne me permet pas de r�cup�rer ce que je veux. Avez-vous des solutions pour ce probl�me ?

    Merci � vous. ^^

  2. #2
    Inactif  

    Homme Profil pro
    Ing�nieur test de performance
    Inscrit en
    D�cembre 2003
    Messages
    1 986
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 51
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : Ing�nieur test de performance
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 1 986
    Par d�faut
    Bonjour.

    Votre question est compl�tement incoh�rente.

    Le titre, c'est "Parser un XML en C++".

    Dans votre question, vous nous dites :

    enfin bref je dois modifier le fichier XML
    Donc, vous devez parser le XML ou le modifier ?

  3. #3
    Expert �minent

    Femme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par d�faut
    Il y a deux mani�res principales de modifier un xml:
    • Soit l'analyser int�gralement, puis en �crire un autre, qui soit le r�sultat de la modification: pr�f�re un parser type sax, et pour l'�criture, � la main (c'est vite fait)
    • Soit constituer l'arborscence des noeuds du document, la modifier, l'�crire dans un (autre) fichier: pour cela, on utilisera plutot un parser type dom

    A toi de voir ton besoin r�el

  4. #4
    Membre habitu�
    Homme Profil pro
    �tudiant
    Inscrit en
    Mars 2015
    Messages
    11
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 34
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 11
    Par d�faut
    Ma question concerne vraiment le fait de parser le XML pour en r�cup�rer un contenu pr�cis. C'est apr�s cette �tape que je devrais modifier le XML, mais pour l'instant je veux juste arriver � choper les dur�es des segments comme je l'ai expliqu�.

  5. #5
    Expert �minent

    Femme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par d�faut
    La technique est justement tr�s diff�rente selon ce que tu veux en faire.

    Si c'est pour extraire quelques informations, les parsers du type SAX sont les plus adapt�s (plus simples, plus rapides, plus petits, etc).
    Si au contraire, tu veux apporter des modifications structurelles, les parsers DOM seront plus utiles.

    Au pire, un xml est un fichier texte.

  6. #6
    R�dacteur/Mod�rateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 153
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 38
    Localisation : Canada

    Informations professionnelles :
    Activit� : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 153
    Billets dans le blog
    4
    Par d�faut
    On pourrait voir o� tu en es ?
    Parce que
    Citation Envoy� par Raphy55 Voir le message
    Alors j'ai essay� avec TinyXML mais �a ne me permet pas de r�cup�rer ce que je veux. Avez-vous des solutions pour ce probl�me ?
    On ne te donnera pas la solution comme �a, et surtout TinyXml sert justement � parser du XML.
    Pensez � consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation r�seau ?
    Aucune aide via MP ne sera dispens�e. Merci d'utiliser les forums pr�vus � cet effet.

  7. #7
    Membre habitu�
    Homme Profil pro
    �tudiant
    Inscrit en
    Mars 2015
    Messages
    11
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 34
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 11
    Par d�faut
    Alors j'ai r�ussi � r�cup�rer ce que je voulais. Mon probl�me maintenant c'est que j'aimerais modifier le texte qui est entre deux balises. Par exemple :

    <id>2</id>

    Je veux remplacer le 2 par un 3 imaginons. TinyXml propose une fonction GetText() mais pas SetText()... Et si je passe par SetValue() �a modifie carr�ment le texte de la balise, donc "id".

    Si vous avez une id�e, merci.

  8. #8
    R�dacteur/Mod�rateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 153
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 38
    Localisation : Canada

    Informations professionnelles :
    Activit� : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 153
    Billets dans le blog
    4
    Par d�faut
    A nouveau : peut-on voir du code !?
    Il est clair que tu utilises mal/ne sais pas utiliser tinyxml. Pour changer le texte d'un �l�ment il faut utiliser SetValue tout simplement.
    Pensez � consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation r�seau ?
    Aucune aide via MP ne sera dispens�e. Merci d'utiliser les forums pr�vus � cet effet.

  9. #9
    Membre habitu�
    Homme Profil pro
    �tudiant
    Inscrit en
    Mars 2015
    Messages
    11
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 34
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 11
    Par d�faut
    Voil� la partie du code, avec le SetText() que je souhaite faire :

    Nom : Code.JPG
Affichages : 785
Taille : 52,6 Ko

    Si je fais SetValue() �a modifie le texte dans la balise puisque, si j'ai bien compris, c'est un TiXmlElement...

  10. #10
    Expert �minent

    Femme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par d�faut
    Et que ferai ton "setText"?
    En quoi cela serait-il diff�rent du setValue()?

  11. #11
    Membre habitu�
    Homme Profil pro
    �tudiant
    Inscrit en
    Mars 2015
    Messages
    11
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 34
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 11
    Par d�faut
    Parce que le SetValue() sur un TiXmlElement va modifier la balise, or moi je veux modifier le texte entre les balises. Par exemple :

    Code xml : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    <segment>
    <id>1</id>
    <from-ms>2500</from-ms>
    <to-ms>9000</to-ms>
    <name>Music</name>
    </segment>

    Je veux remplacer le 2500 par un 0 imaginons. Eh bien en faisant SetValue() j'ai obtenu :

    Code xml : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    <segment>
    <id>1</id>
    <0>2500</0>
    <to-ms>9000</to-ms>
    <name>Music</name>
    </segment>

  12. #12
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    La documentation de GetText() en dit pourtant assez: Pour manipuler le texte normalement, il faut manipuler un n�ud de type TiXmlText.
    Donc, manipuler child2->FirstChild() et faire un SetValue() sur ce n�ud-l� plut�t que child2 lui-m�me.

    Il ne m'a pas fallu dix minutes pour comprendre �a, donc tu aurais pu faire un effort...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  13. #13
    Expert �minent

    Femme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par d�faut
    a priori, c'est parce qu'il faut que tu attrapes le noeud text contenu dans ton noeud to-ms.

    car en effet, "<xml>truc</xml>" correspond � un noeud element nomm� xml, contenant un noeud text de valeur truc

  14. #14
    Membre habitu�
    Homme Profil pro
    �tudiant
    Inscrit en
    Mars 2015
    Messages
    11
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 34
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 11
    Par d�faut
    Merci M�dinoc, �a marche. J'avais fait beaucoup de recherches mais comme j'ai une deadline j'ai pr�f�r� venir ici tout en continuant mes recherches pour maximiser mes chances de finir.

    Merci pour votre aide, sujet r�solu.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [C#] Parser du XML
    Par karl3i dans le forum Windows Forms
    R�ponses: 5
    Dernier message: 27/02/2009, 09h46
  2. [DOM] Parser un XML
    Par Zapan dans le forum Format d'�change (XML, JSON...)
    R�ponses: 3
    Dernier message: 02/12/2005, 11h41
  3. [DOM XML] Comment parser du XML avec une version 4.3 ?
    Par ouioui2000 dans le forum Biblioth�ques et frameworks
    R�ponses: 7
    Dernier message: 18/10/2005, 15h52
  4. [FLASH MX2004] Parser un XML en action script
    Par jejeman dans le forum Flash
    R�ponses: 6
    Dernier message: 20/09/2005, 17h25
  5. [XSL] Parser fichier xml : erreurs + incompr�hensions
    Par totobouchon dans le forum Biblioth�ques et frameworks
    R�ponses: 1
    Dernier message: 19/07/2005, 15h47

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