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

MFC Discussion :

Récuperer les valeurs d'un noeud avec MSXML


Sujet :

MFC

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 53
    Points : 37
    Points
    37
    Par défaut Récuperer les valeurs d'un noeud avec MSXML
    Bonjour,

    Je me permets de faire ce topic, parce que j'en n'ai pas trouvé qui expliquer clairement les méthodes simples de msxml sous visual c++.
    Donc, j'utilise Visual C++ et les MFC, j'ai installé MSXML 6.0. Et j'aimerai lire et plus particulièrement récupérer par exemple la valeur d'un certain noeud et toutes les valeurs d'un autre noeud.

    Est ce que quelqu'un aurait un petit exemple simple ? pourrait m'aider ou m'indiquer des liens ou je pourrai en savoir plus ?

    Merci d'avance à vous tous.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 117
    Points : 12 206
    Points
    12 206
    Par défaut
    http://support.microsoft.com/kb/q246230/

    Pas tester, mais la description semble sympa.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 53
    Points : 37
    Points
    37
    Par défaut
    Merci pour ta réponse, j'ai un peu regarder l'exemple. ça m'a aidé pour démarrer, mais je n'arrive toujours pas à savoir comment faire pour récupérer directement la valeur d'un nœud. C'est à dire aller directement sur ce nœud là et récupérer la valeur ...

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 117
    Points : 12 206
    Points
    12 206
    Par défaut
    Bin, la valeur d'un noeud XML, c'est quoi pour toi ?

  5. #5
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Normalement, soit tu parses avec SAX et tu obtients les 'valeurs' d'un nom (nom du nœud, nom/valeurs des attributs, texte entre les balises) dans les callback, soit tu construit un DOMDocument et là tu as accès aux noeuds de l'arbre XML. L'interface MS-XML est à peu près claire. Où butte-tu?

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 53
    Points : 37
    Points
    37
    Par défaut
    Citation Envoyé par bacelar Voir le message
    Bin, la valeur d'un noeud XML, c'est quoi pour toi ?
    Par exemple si je prend le noeud élément "TITLE" dans l'exemple de fichier xml de msdn book.xml

    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
     
    <?xml version='1.0'?>
    <COLLECTION
       xmlns:dt="urn:schemas-microsoft-com:datatypes">
      <DATE dt:dt="datetime">1998-10-13T15:56:00</DATE>
      <BOOK>
        <TITLE>Lover Birds</TITLE>
        <AUTHOR>Cynthia Randall</AUTHOR>
        <PUBLISHER>Lucerne Publishing</PUBLISHER>
      </BOOK>
      <BOOK>
        <TITLE>The Sundered Grail</TITLE>
        <AUTHOR>Eva Corets</AUTHOR>
        <PUBLISHER>Lucerne Publishing</PUBLISHER>
      </BOOK>
      <BOOK>
        <TITLE>Splish Splash</TITLE>
        <AUTHOR>Paula Thurman</AUTHOR>
        <PUBLISHER>Scootney</PUBLISHER>
      </BOOK>
    </COLLECTION>
    Je voudrais récuperer la liste suivante :

    Lover Birds
    The Sundered Grail
    Splish Splash


    Pour ça, je pense à utiliser getElementsByTagName("TITLE") ??

    Et dans un deuxième cas, si j'ai un fichier xml de ce style :

    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
    <?xml version='1.0'?>
    <COLLECTION
       xmlns:dt="urn:schemas-microsoft-com:datatypes">
      <DATE dt:dt="datetime">1998-10-13T15:56:00</DATE>
      <BOOK>
        <TITLE>Lover Birds</TITLE>
        <AUTHOR>Cynthia Randall</AUTHOR>
        <PUBLISHER>Lucerne Publishing</PUBLISHER>
      </BOOK>
      <ARTICLE>
        <TITLE>The Sundered Grail</TITLE>
        <AUTHOR>Eva Corets</AUTHOR>
        <PUBLISHER>Lucerne Publishing</PUBLISHER>
      </ARTICLE>
      <NOVEL>
        <TITLE>Splish Splash</TITLE>
        <AUTHOR>Paula Thurman</AUTHOR>
        <PUBLISHER>Scootney</PUBLISHER>
      </NOVEL>
    </COLLECTION>
    Je voudrais obtenir la valeur du noeud élément "TITLE" par exemple, mais que pour le noeud élément "ARTICLE", donc ce qui est en gras. J'ai bien une idée qui est de chercher le noeud élément "ARTICLE" et ensuite de chercher dans ses noeuds enfants le noeud "TITLE", mais je sais pas comment l'exprimer.



    Ensuite Je peux pas utiliser SAX parce que le projet existe déjà et j'ai cru comprendre qu'il fallait indiquer à la création du projet, si c'était un projet SAX. Bref, de toute façon, j'ai déjà fait le chargement du fichier XML en utilisant un DOMDocument.


    Merci pour votre aide.

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 117
    Points : 12 206
    Points
    12 206
    Par défaut
    Le mot magique c'est XPATH ;-)

    http://msdn.microsoft.com/en-us/libr...23(VS.85).aspx

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xmlDoc.documentElement.selectNodes("//ARTICLE/TITLE");
    devrait suffire ?

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 53
    Points : 37
    Points
    37
    Par défaut
    Citation Envoyé par bacelar Voir le message
    Le mot magique c'est XPATH ;-)

    http://msdn.microsoft.com/en-us/libr...23(VS.85).aspx

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xmlDoc.documentElement.selectNodes("//ARTICLE/TITLE");
    devrait suffire ?
    Merci, je crois bien que ça va m'aider. Merci encore à vous deux.

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 53
    Points : 37
    Points
    37
    Par défaut
    Et bien merci, ça a l'air de marcher, j'ai pas encore essayé le premier cas, mais la recherche par XPath marche !

    Voilà ce que j'ai écrit comme code et ça me renvoie bien la bonne valeur :

    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
     
    	IXMLDOMDocument2Ptr l_xDOMDoc(__uuidof(DOMDocument));
    	m_xDOMDoc = l_xDOMDoc;
    	_bstr_t l_bsURL = p_sCheminFichierMessagerie + "\\" + p_sFichierMessagerie;
     
    	l_xDOMDoc->put_async(VARIANT_FALSE);
     
    	VARIANT_BOOL l_vbResult = l_xDOMDoc->load(_variant_t(l_bsURL));
    	if (VARIANT_FALSE == l_vbResult)
    	{
    		// Load failed
    		IXMLDOMParseErrorPtr l_xParseError = l_xDOMDoc->GetparseError();
    		long dwError = l_xParseError->GeterrorCode();
    		_bstr_t l_bsReason = l_xParseError->Getreason();
    		l_xErreur = EErrFichierMessagerieOuverture;
     
    	}
    	else
    	{
    		l_xErreur = EErrOk;
    	}

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
        CString     l_sFormatMessagerie         = "";
    	IXMLDOMNodePtr l_xResultNode;
    	_bstr_t		l_bsFormatMessagerie		= "";
     
    	m_xDOMDoc->setProperty("SelectionLanguage", "XPath");
     
    	l_xResultNode = m_xDOMDoc->selectSingleNode("//DIAG-LAYER-CONTAINER/PROTOCOLS/PROTOCOL/SHORT-NAME");
     
    	l_bsFormatMessagerie = l_xResultNode->Gettext();
     
     
     
     
    	return l_sFormatMessagerie;

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer les valeurs d'un noeud dans un fichier XML
    Par yosthegost dans le forum Delphi
    Réponses: 1
    Dernier message: 30/05/2006, 17h38
  2. Récuperer les valeur d'un formulaire en CGI
    Par crakos dans le forum C++
    Réponses: 1
    Dernier message: 29/05/2006, 12h16
  3. Réponses: 12
    Dernier message: 02/05/2006, 19h37
  4. Récuperer les valeurs de toutes les colonnes
    Par wishmastah dans le forum Access
    Réponses: 1
    Dernier message: 10/03/2006, 11h19
  5. [JCheckBox] Récuperer les valeurs
    Par Regis.C dans le forum Composants
    Réponses: 3
    Dernier message: 12/04/2005, 21h19

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