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

Windows Phone .NET Discussion :

Récupérer les valeurs des attributs dans un fichier XML ?


Sujet :

Windows Phone .NET

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2011
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 51
    Points : 17
    Points
    17
    Par défaut Récupérer les valeurs des attributs dans un fichier XML ?
    Salut

    En fait, j'ai un fichier XML, je pense que j'arrive à le parcourir ligne par ligne, mais je voudrais récupérer les valeurs des attributs de chaque ligne. Voila comment je procède (doc est l'objet XDocument (xml), et dico est un Dictionnary<string,string>) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    foreach (XNode add in doc.DescendantNodes())
    {
         System.Xml.XmlReader xr = add.CreateReader();
         if (xr.GetAttribute("key") != null && xr.GetAttribute("value") != null)
         {
               dico.Add(xr.GetAttribute("key"), xr.GetAttribute("value"));
         }
    }
    Ca ne fonctionne pas (sinon je ne serai pas là). Apparement d'après le debug, il ne trouve pas de valeurs aux attributs lors du test if. Par contre, xr contient bien la ligne à regarder.

    Voila le fichier 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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
         <configSections>
              <section name="******" type="************,*******" />
              </configSections>
     
              <appSettings>
                   <!-- Utilisateur de l'application-->
                   <add key="utilisateur" value="user"/>
                   <!-- Mot de passe-->
                   <add key="motDePasse" value="pass"/>
    	  <!-- Url de base pour les services-->
                   <add key="servicesUrl" value="http://webservicelink" />
                   <!-- Url de base pour les services du centre appel-->
                   <add key="callCenterUrl" value="http://localhost/CallCenterServices" />
                   <!-- Gestion de la synchro -->
                   <add key="synchro.compteur.releveLibre" value="False" />
                   <add key="synchro.compteur.releveTournee" value="False" />
                   <add key="synchro.forcerNotificationAuto" value="True" />
                   <add key="synchro.intervention.borneInf" value="-2" />
                   <add key="synchro.intervention.borneSup" value="2" />
                   <add key="synchro.intervention.horizon" value="0" />
                   <add key="synchro.intervention.responsable" value="False" />
                   <add key="synchro.intervention.demandeur" value="False" />
                   <add key="synchro.intervention.ressource" value="True" />
                   <add key="synchro.calendrier.borneInf" value="-2" />
                   <add key="synchro.calendrier.borneSup" value="2" />
                   <add key="synchro.calendrier.service" value="False" />
                   <add key="synchro.compteur.ordreTournee" value="NUMERO" />
                   <add key="worklfow.intervention.actif" value="True" />
                   <add key="menu.action1" value="" />
                   <add key="menu.action2" value="" />
                   <add key="menu.action3" value="" />
                   <add key="synchro.parc.nbHistoriqueITV" value="3" />
        </appSettings>	
    </configuration>
    J'ai un code en C# qui permet de faire ca et je me suis inspirer de ca, mais ca utilise XMLDocument, SelectNodes et Attributes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    foreach(XmlNode add in dom.SelectNodes("//configuration/appSettings/add")
    {
         appSettings[add.Attributes["key"].Value] = add.Attributes["value"].InnerText;
    }
    Quelqu'un peut m'aider ? Merci d'avance

  2. #2
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Tu peux simplement faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var key = add.Attribute("key");
    if(key != null) keyValue = key.Value;
    Introduction à Silverlight 4 (new) ; Localisation d'une application Silverlight (new) ;
    Mon espace perso[/B]

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. Albert Einstein[/SIZE]

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2011
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 51
    Points : 17
    Points
    17
    Par défaut
    Apparemment, la classe XNode ne contient pas de méthode Attribute(string)...c'est là où est le problème, j'ai utilisé la méthode GetAttribute(string) de la classe XmlReader qui est le Reader du XNode...je ne sais pas si c'est correct...

  4. #4
    Membre à l'essai
    Inscrit en
    Mai 2011
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 51
    Points : 17
    Points
    17
    Par défaut
    J'ai trouvé une solution

    http://weblogs.asp.net/psheriff/arch...ows-phone.aspx

    En gros,il faut utiliser la classe XElement au lieu de XNode et la méthode Descendants(XName) et renseigner le nom du noeud qui nous interresse...bon j'explique mal mais le tuto est rapide à comprendre je pense.

    Merci en tout cas.

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 15/04/2009, 10h33
  2. [JSTL] Récupérer les valeurs des champs dans un c:forEach
    Par SaladinDev dans le forum Taglibs
    Réponses: 3
    Dernier message: 06/01/2009, 20h56
  3. [DOM] changer les valeurs des attributs d'un fichier XML
    Par nonna dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 21/03/2008, 11h56
  4. Réponses: 1
    Dernier message: 22/01/2008, 17h24
  5. Réponses: 2
    Dernier message: 11/12/2006, 12h38

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