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

[C++/CLI] Comment utiliser XmlDocument?


Sujet :

C++/CLI

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre tr�s actif
    Profil pro
    Conseil - Consultant en syst�mes d'information
    Inscrit en
    Juin 2006
    Messages
    240
    D�tails du profil
    Informations personnelles :
    �ge : 42
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Conseil - Consultant en syst�mes d'information
    Secteur : High Tech - Multim�dia et Internet

    Informations forums :
    Inscription : Juin 2006
    Messages : 240
    Par d�faut [C++/CLI] Comment utiliser XmlDocument?
    Bonjour,

    Bon voila j'aimerais r�cup�rer les informations d'un documents XML (c:\Test.xml) :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <ConfigCountry>
       <Country>
          <Name>US</Name>
          <Value>10000000</Value>
       </Country>
       <Country>
          <Name>France</Name>
          <Value>01000000</Value>
       </Country>
    </ConfigCountry>
    J'arrive a ouvrir le fichier mais apr�s je ne sais pas trop commnt r�cup�rer le donn�es...
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    System::Xml::XmlDocument^ XmlDoc = gcnew System::Xml::XmlDocument();
    XmlDoc->Load("c:\\Test.xml");

    Dans mon Cas j'aimerais R�cupr�rer chaque name de country dans un array<String^ >^ et chaque Value de country dans un autre array<String^ >^.

    Est ce possible? si oui pourriez vous me mettre sur la voie (quel m�thodes utiliser)

    Au fait je suis d�butant...

  2. #2
    Membre exp�riment�
    Avatar de StormimOn
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 47
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par d�faut
    Si tu dois traiter ton fichier en lecture seule, utilise plut�t les classes XPath
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    using namespace System::Xml::XPath;
    //...
    void TraiteXml()
    {
        XPathDocument ^ doc = gcnew XPathDocument(fileName);
        XPathNavigator ^ nav = doc->CreateNavigator();
        XPathNodeIterator ^ iter = nav->Select("ConfigCountry/Country");
        while (iter->MoveNext())
        {
            String ^ name = iter->Current->SelectSingleNode("Name")->Value;
            String ^ value = iter->Current->SelectSingleNode("Value")->Value;
        }
    }

  3. #3
    Membre tr�s actif
    Profil pro
    Conseil - Consultant en syst�mes d'information
    Inscrit en
    Juin 2006
    Messages
    240
    D�tails du profil
    Informations personnelles :
    �ge : 42
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Conseil - Consultant en syst�mes d'information
    Secteur : High Tech - Multim�dia et Internet

    Informations forums :
    Inscription : Juin 2006
    Messages : 240
    Par d�faut
    Bon j'avais r�ussi mais ta m�thode est plus pratique. Merci.

    Autre petite question, il est possible que mon fichier XML contiennent des caract�res avec accent hors mon soft me jettent en me disant caract�res non valides.

    Ya t'il moyen de r�cup�r� tt de m�me ses donn�es et si oui est ce compliqu� (sans quoi je m'en passerais)?

  4. #4
    Membre exp�riment�
    Avatar de StormimOn
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 47
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par d�faut
    Citation Envoy� par ben_ghost
    Autre petite question, il est possible que mon fichier XML contiennent des caract�res avec accent
    C'est la m�me structure que le fichier donn� en exemple plus haut ?
    mon soft me jette en me disant caract�res non valides.
    Tu te fais "jeter" sur une commande pr�cise ? Si oui laquelle, montre le code en indiquant o� se produit l'erreur ainsi que le type de l'erreur.

  5. #5
    Membre tr�s actif
    Profil pro
    Conseil - Consultant en syst�mes d'information
    Inscrit en
    Juin 2006
    Messages
    240
    D�tails du profil
    Informations personnelles :
    �ge : 42
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Conseil - Consultant en syst�mes d'information
    Secteur : High Tech - Multim�dia et Internet

    Informations forums :
    Inscription : Juin 2006
    Messages : 240
    Par d�faut
    ca bloque a la ligne en rouge :

    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
    if (System::IO::File::Exists(SourceFile))
    	{
    		System::Xml::XPath::XPathDocument^ doc = gcnew System::Xml::XPath::XPathDocument(SourceFile);
    		System::Xml::XPath::XPathNavigator ^ nav = doc->CreateNavigator();
    		System::Xml::XPath::XPathNodeIterator ^ iter = nav->Select("ConfigCountry/Country");
    		int i =0;
    		array<String^>^ tabString = gcnew array<String^> (iter->Count);
    		while (iter->MoveNext())
    		{
    			tabString[i] = iter->Current->SelectSingleNode("Name")->Value;
    			i++;
    		}
    		initCheckbox(tabString);
    	}
    Dans le cas ou le fichier ne comporte pas d'accent il n'y pas de probl�me.

  6. #6
    Membre tr�s actif
    Profil pro
    Conseil - Consultant en syst�mes d'information
    Inscrit en
    Juin 2006
    Messages
    240
    D�tails du profil
    Informations personnelles :
    �ge : 42
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Conseil - Consultant en syst�mes d'information
    Secteur : High Tech - Multim�dia et Internet

    Informations forums :
    Inscription : Juin 2006
    Messages : 240
    Par d�faut Pour info
    Fichier qui commet une erreur :
    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
     
       <Country>
          <Name>US</Name>
          <Value>10000000</Value>
       </Country>
       <Country>
          <Name>Franceé</Name>
          <Value>01000000</Value>
       </Country>
        <Country>
          <Name>Coucou</Name>
          <Value>01000000</Value>
       </Country>
        <Country>
          <Name>second fichier</Name>
          <Value>01000000</Value>
       </Country>
    </ConfigCountry>
    Fichier qui ne commet pas d'erreur :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <ConfigCountry>
       <Country>
          <Name>US</Name>
          <Value>10000000</Value>
       </Country>
       <Country>
          <Name>France</Name>
          <Value>01000000</Value>
       </Country>
    </ConfigCountry>

  7. #7
    Membre exp�riment�
    Avatar de StormimOn
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 47
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par d�faut
    Je vois le probl�me, il y a un moyen tr�s simple de le contourner normallement, il faut passer par un Stream ce qui permettra de forcer l'encodage � utiliser
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    using namespace System::IO;
    using namespace System::Text;
    using namespace System::Xml::XPath;
    ...
    StreamReader ^ reader = gcnew StreamReader(SourceFile, Text::Encoding::UTF8);		
    XPathDocument ^ doc = gcnew XPathDocument(reader);
    ...
    dans cette exemple j'ai utilis� Encoding::UTF8, mais ce n'est peut �tre pas l'encodage qui r�glera ton probl�me. Ca d�pendra de l'encodage de ton fichier Xml, donc � toi de voir la valeur qui r�glera le probl�me

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

Discussions similaires

  1. comment utiliser methodInvoker en c++ cli?
    Par abouelmajd dans le forum C++/CLI
    R�ponses: 2
    Dernier message: 21/12/2012, 20h01
  2. Comment utiliser du C++/CLI dans du VB.Net ?
    Par onur dans le forum C++/CLI
    R�ponses: 3
    Dernier message: 19/10/2006, 11h42
  3. Comment utiliser HttpUtility.HtmlDecode() en c++/cli ?
    Par boudreau_benjamin dans le forum C++/CLI
    R�ponses: 1
    Dernier message: 20/05/2006, 07h58
  4. Comment utiliser OUT ?
    Par Bouziane Abderraouf dans le forum CORBA
    R�ponses: 3
    Dernier message: 20/07/2002, 09h35
  5. R�ponses: 5
    Dernier message: 11/06/2002, 15h21

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