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

XML Discussion :

[Xerces] Récuperer la valeur d'un nœud avec SAX2


Sujet :

XML

  1. #1
    Invité
    Invité(e)
    Par défaut [Xerces] Récuperer la valeur d'un nœud avec SAX2
    Bonjour les geeks
    tout est dans l'intitulé !!! je sais le faire avec dom mais sax ça ce un autre delire !! et comme les objets ont créés avec des clics de souris !!! la méthode sax me semble la plus appropriée .
    merci pour la reponse
    l'objectif du logiciel ce de faire un creaturelike en polygone mdr Nom : Creaturesalbianyearsboxshot.jpg
Affichages : 190
Taille : 24,5 Ko

    fichier xml de données :
    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
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
     
    <?xml version="1.0" encoding="UTF-8"?>
    <root>
        <centaurien id="0">
            <identite nom="adam" sexe="0" age="18" conjoint="eve" gene="1"/>
            <famille>
                <parents pere="*" mere="*"/>
                <enfants>
                    <enfant id="0">theodore</enfant>
                    <enfant id="1">lima</enfant>
                    <enfant id="2">zerdu</enfant>
                </enfants>
            </famille>
        </centaurien>
        <centaurien id="1">
            <identite nom="eve" sexe="2" age="17" conjoint="adam" gene="1"/>
            <famille>
                <parents pere="*" mere="*"/>
                <enfants>
                    <enfant id="0">theodore</enfant>
                    <enfant id="1">lima</enfant>
                    <enfant id="2">zerdu</enfant>
                </enfants>
            </famille>
        </centaurien>
        <centaurien id="2">
            <identite nom="buddha" sexe="0" age="18" conjoint="shiva" gene="1"/>
            <famille>
                <parents pere="*" mere="*"/>
                <enfants>
                    <enfant id="0">maria</enfant>
                    <enfant id="1">lima</enfant>
                    <enfant id="2">zerdu</enfant>
                </enfants>
            </famille>
        </centaurien>
        <centaurien id="3">
            <identite nom="shiva" sexe="1" age="17" conjoint="buddha" gene="1"/>
            <famille>
                <parents pere="*" mere="*"/>
                <enfants>
                    <enfant id="0">maria</enfant>
                    <enfant id="1">lima</enfant>
                    <enfant id="2">zerdu</enfant>
                </enfants>
            </famille>
        </centaurien>
        <centaurien id="4">
            <identite nom="desire" sexe="0" age="12" conjoint="diablo" gene="2"/>
            <famille>
                <parents pere="seb" mere="lea"/>
                <enfants>
                    <enfant id="0">nickao</enfant>
                    <enfant id="1">lucy</enfant>
                    <enfant id="2">nigu</enfant>
                </enfants>
            </famille>
        </centaurien>
        <centaurien id="5">
            <identite nom="diablo" sexe="0" age="12" conjoint="desire" gene="2"/>
            <famille>
                <parents pere="theodore" mere="maria"/>
                <enfants>
                    <enfant id="0">nickao</enfant>
                    <enfant id="1">lucy</enfant>
                    <enfant id="2">nigu</enfant>
                </enfants>
            </famille>
        </centaurien>
            <centaurien id="5">
            <identite nom="theodore" sexe="0" age="12" conjoint="maria" gene="2"/>
            <famille>
                <parents pere="adam" mere="eve"/>
                <enfants>
                    <enfant id="0">decibel</enfant>
                    <enfant id="1">diablo</enfant>
                    <enfant id="2">negatif</enfant>
                </enfants>
            </famille>
        </centaurien>
                <centaurien id="5">
            <identite nom="maria" sexe="1" age="12" conjoint="theodore" gene="2"/>
            <famille>
                <parents pere="buddha" mere="shiva"/>
                <enfants>
                    <enfant id="0">decibel</enfant>
                    <enfant id="1">diablo</enfant>
                    <enfant id="2">negatif</enfant>
                </enfants>
            </famille>
        </centaurien>
    </root>
    classe metier Centaurien :
    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
     
    class Centaurien
    {
        public:
            Centaurien(string nom,int n);
            virtual ~Centaurien();
            int choixSexe(int n);
            string getNom(){return nomCentaurien;}
            string getChars();
        protected:
        private:
        string nomCentaurien;
        string nomConjoints;
        string nomEnfants;
        int sexe;
        int age;
        int nbreCote;
     
    };
     
    Centaurien::Centaurien(string nom,int n) :nomCentaurien(nom),nbreCote(n)
    {
    }
    int Centaurien::choixSexe(int n){
        int choix=n%3;
                switch(choix){
                case 0 : cout<<"male  : ";return 0;break;
            case 1 : cout<<"feminin  : ";return 1;break;
            case 2 : cout<<"androgyne  : ";return 2;break;} }
    Centaurien::~Centaurien()
    {
        //dtor
    }
    classe Parser :
    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
     
    #include <xercesc/sax2/DefaultHandler.hpp>
    #include <xercesc/sax2/Attributes.hpp>
    #include <xercesc/util/XMLString.hpp>
    #include <xercesc/sax2/SAX2XMLReader.hpp>
    #include <xercesc/sax2/XMLReaderFactory.hpp>
    #include <string>
    #include <iostream>
    using namespace std;
    using namespace xercesc;
     
    class ParserSAX : public DefaultHandler
    {
        public:
            ParserSAX();
            void startElement(const XMLCh *const uri,const XMLCh *const localname,
                              const XMLCh *const qname,const Attributes &attrs);
            void characters(const XMLCh *const chars,const unsigned int length);
            void fatalError(const SAXParseException&);
            virtual ~ParserSAX();
        protected:
        private:
     
    };
     
    ParserSAX::ParserSAX()
    {
     
    }
    void ParserSAX::startElement(const XMLCh *const uri,const XMLCh *const localname,
                      const XMLCh *const qname,const Attributes &attrs){
        cout<<"--------------------------------------------------"<<endl;
        char* messUri=XMLString::transcode(uri);
        char* messLocalName=XMLString::transcode(localname);
        char* messQName=XMLString::transcode(qname);
        cout<<"Elem : "<<" LocalName : "<<messLocalName<<endl;
        XMLString::release(&messUri);XMLString::release(&messLocalName);XMLString::release(&messQName);
        for(int i=0;i<attrs.getLength();i++){
        char* messAttrNom=XMLString::transcode(attrs.getQName(i));
        char* messAttrVal=XMLString::transcode(attrs.getValue(i));
        cout<<"Attr : "<<messAttrNom<<" : "<<messAttrVal<<endl;
        XMLString::release(&messAttrNom);XMLString::release(&messAttrVal);
        }
    }
    void ParserSAX::characters(const XMLCh *const chars,const unsigned int length){
    char* messChars=XMLString::transcode(chars);
    cout<<"valeur Element : "<<messChars<<endl;XMLString::release(&messChars);
    }
    void ParserSAX::fatalError(const SAXParseException& exception){
        char* message = XMLString::transcode(exception.getMessage());
        cout << "Fatal Error: " << message
             << " at line: " << exception.getLineNumber()
             << endl;
    }
    ParserSAX::~ParserSAX()
    {
        //dtor
    }
    fichier main :
    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
    60
    61
    62
    63
    64
    65
    66
     
    #include <SDL/SDL.h>
    #include <GL/gl.h>
    #include <GL/glu.h>
    #include "Centaurien.h"
      #include <xercesc/sax2/SAX2XMLReader.hpp>
        #include <xercesc/sax2/XMLReaderFactory.hpp>
        #include <xercesc/sax2/DefaultHandler.hpp>
        #include <xercesc/util/XMLString.hpp>
     
        #if defined(XERCES_NEW_IOSTREAMS)
        #include <iostream>
        #else
        #include <iostream.h>
        #endif
    #include "ParserSAX.h"
        XERCES_CPP_NAMESPACE_USE
    int main(int argc, char *argv[])
    {
     
     try {
                XMLPlatformUtils::Initialize();
            }
            catch (const XMLException& toCatch) {
                char* message = XMLString::transcode(toCatch.getMessage());
                cout << "Error during initialization! :\n";
                cout << "Exception message is: \n"
                     << message << "\n";
                XMLString::release(&message);
                return 1;
            }
     
            char* xmlFile = "famille.xml";
            SAX2XMLReader* parser = XMLReaderFactory::createXMLReader();
            parser->setFeature(XMLUni::fgSAX2CoreValidation, true);
            parser->setFeature(XMLUni::fgSAX2CoreNameSpaces, true);   // optional
     
            ParserSAX* defaultHandler = new ParserSAX();
            parser->setContentHandler(defaultHandler);
            parser->setErrorHandler(defaultHandler);
     
            try {
                parser->parse(xmlFile);
            }
            catch (const XMLException& toCatch) {
                char* message = XMLString::transcode(toCatch.getMessage());
                cout << "Exception message is: \n"
                     << message << "\n";
                XMLString::release(&message);
                return -1;
            }
            catch (const SAXParseException& toCatch) {
                char* message = XMLString::transcode(toCatch.getMessage());
                cout << "Exception message is: \n"
                     << message << "\n";
                XMLString::release(&message);
                return -1;
            }
            catch (...) {
                cout << "Unexpected Exception \n" ;
                return -1;
            }
            delete parser;
            delete defaultHandler;
        return 0;
    }
    ps : l'idée ce quand meme de recuperer les données du fichier xml pour les balancer dans opengl avec la classe metier

    ps2 : elle sert à quoi cette classe SAX2XMLReader misà part lire le fichier xml ?

  2. #2
    Invité
    Invité(e)
    Par défaut re :
    up siouplais !! j'ai trouvé ca mais ce en java enjoythepunk.free.fr/Docs/ITIN/Cours/xml/cours/pxm-060-Parseur.pdf

Discussions similaires

  1. récuperer la valeur d'un paramètre
    Par pelelive dans le forum Access
    Réponses: 4
    Dernier message: 13/06/2005, 16h10
  2. [VB.NET]Récuperer des valeurs d'une autre page
    Par Dnx dans le forum ASP.NET
    Réponses: 8
    Dernier message: 12/05/2005, 16h19
  3. [JCheckBox] Récuperer les valeurs
    Par Regis.C dans le forum Composants
    Réponses: 3
    Dernier message: 12/04/2005, 21h19
  4. Récuperer la valeur d'un entier
    Par Sniper37 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 16/03/2005, 12h13
  5. [jsp] récuperation de valeur d'un formulaire
    Par peppena dans le forum Servlets/JSP
    Réponses: 12
    Dernier message: 30/03/2004, 21h00

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