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 :

Lire un attribut dans un fichier XML en C++


Sujet :

XML

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Juillet 2002
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Lire un attribut dans un fichier XML en C++
    Bonjour,

    Je travaille avec le document XML suivant :
    <?xml version="1.0"?>
    <manufacturer name="Chevrolet">
    <make name="Corvette">
    <model>2000 Convertible</model>
    <price currency="usd">60,000</price>
    <horsePower>420</horsePower>
    <fuelCapacity units="gallons">18.5</fuelCapacity>
    </make>
    </manufacturer>

    et je cherche à récupérer l'attribut "name".
    Pour cela, j'ai écrit le code C++ suivant :

    IXMLDOMNamedNodeMap *pMap = m_pDocRoot->Getattributes();
    if(pMap != NULL)
    {
    IXMLDOMNode *pNode;
    VARIANT varValue;

    pNode = pMap->getNamedItem("name");
    if (pNode != NULL)
    {
    pNode->get_nodeValue(&varValue);
    _bstr_t bstr(varValue);
    AfxMessageBox((char*)bstr);
    }
    }

    Mon problème est que le pointeur pNode est toujours NULL.

    Quelqu'un peut m'aider ?????

    Merci,

    Jérôme

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 40
    Points : 48
    Points
    48
    Par défaut
    Je sais pas si c'est pareil qu'en java, mais ca vaut le coup d'essayer.

    Je crois que ca fait parti du standart DOM :

    En fait si ton doc XML est le suivant :

    <Nom>TOTO</Nom>

    Le parseur DOM l'interprete comme ca :

    <Nom><TEXTNODE>Toto</TEXTNODE></Nom>

    ie tous les Noeuds texte sont fils de noeuds textnode

    Donc, en java, faut faire (N c mon noeud node)

    N.getFirstChild().getNodeValue()

    Donc en C : N->getFirstChild()->getNodeValue()

    Ca vaut le coup d'essayer !

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 40
    Points : 48
    Points
    48
    Par défaut
    Aprsè relecture de ta question, je suis plus d'accord avec ma reponse donc je corrige :

    Normalement XMLNODE dérive de XMLELEMENT (ou un truc comme ca... ca aussi ca fait parti des standart DOM).

    Et XMLELEMENT doit avoir une méthode getAttribute("name");

    En plus, tu doit pouvoir faure un cast bête et méchant !

    Une dernière remarque : ton noeud root, c'est pas manifacture, c'est une méta-racine.

    Donc ton noeud manifacture, c'est nRoot->getFirstChild()

    A+

Discussions similaires

  1. Réponses: 4
    Dernier message: 10/04/2008, 18h54
  2. comment je pourrais modifier un attribut dans un fichier xml
    Par ryoussef19 dans le forum Visual C++
    Réponses: 6
    Dernier message: 24/08/2007, 15h16
  3. VBScript ASP ET XMLDOM Modification attribut dans un fichier XML
    Par PrinceMaster77 dans le forum VBScript
    Réponses: 12
    Dernier message: 11/06/2007, 07h13
  4. [Rech. Comp.] Lire et écrire dans des fichiers XML
    Par Rodrigue dans le forum C++Builder
    Réponses: 4
    Dernier message: 26/08/2005, 21h48
  5. Affecter un attribut dans un fichier XML ou XSL
    Par LLaurent dans le forum XMLRAD
    Réponses: 7
    Dernier message: 05/06/2003, 15h04

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