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

InfoPath .NET Discussion :

Obtenir le nom d'un noeud d'une source de données


Sujet :

InfoPath .NET

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 16
    Points : 11
    Points
    11
    Par défaut Obtenir le nom d'un noeud d'une source de données
    J'ai trouvé un exemple d'ecriture en C# de la valeur d'un noeud spécifique (ici my:employee).

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public void FormEvents_Loading(object sender, LoadingEventArgs e)
    {
       // Create XPathNavigator positioned at the root of the main data 
       // source.
       XPathNavigator myNav = this.MainDataSource.CreateNavigator()
     
       // Select employee field and set value to username.
       myNav.SelectSingleNode("//my:employee",this.NamespaceManager).
          SetValue(System.Environment.UserName);
    }

    Est-il possible de parcourir la source de données principale sans connaitre le nom des noeuds?

    Mon idée serait de parcourir la source de données, sans en connaitre le contenu. On se positionne sur le premier noeud, on obtient le nom du noeud courant, on l'écrit dans un fichier xml, puis on passe au noeud suivant.

  2. #2
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 59
    Points : 47
    Points
    47
    Par défaut
    Salut,
    Je pense bien que cela est possible, mais il faudrait tester; je te donne une piste:

    En supposant que ta fonction de récupération s'appelle myRecup(valeur)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    private void parcourirRecursif(XmlNode noeud)
            {
                myRecup(noeud.Name)
                    if (noeud.HasChildNodes)
                    {
                        foreach (XmlNode n in noeud.ChildNodes)
                            parcourirRecursif(n);
                    }//if
     
              }//parcourirRecursif
    Ce qui te reste à faire, c'est de spécifier le noeud de départ comme paramètre d'entré. Good luck...

  3. #3
    Membre éprouvé
    Homme Profil pro
    Référent technique
    Inscrit en
    Juillet 2007
    Messages
    834
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Référent technique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 834
    Points : 1 219
    Points
    1 219
    Par défaut
    Bonjour,

    Je ne vois pas bien l'intérêt d'accèder à tes champs sans en connaitre la correspondance...

    La solution récursive proposée semble bonne sauf qu'elle n'inclut pas les parcours de même niveau puisque tu ne fais que descendre dans l'arborescence.

    Cordialement.
    Rémi MATAYRON
    N'hésitez pas à visiter mon blog dédié à InfoPath et SharePoint : http://rmatayron.blogspot.com/

    Pour plus de visibilité sur le forum, marquer la question en [Résolu] lorsque la réponse fournie vous convient.

  4. #4
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 59
    Points : 47
    Points
    47
    Par défaut
    Oui, c'est vrai que billout rm a raison, et je me dis que cela dépend de la finalité des valeurs récupérées. Si c'est pour juste connaitre la structure de ton fichier, ça pourrait aller... COntrairement à cela, tu n'aurais pas la possibilité d'obtenir la structure intégrale en termes d'imbrication des noeuds du genre: savoir que tel noeud englobe tel autre...

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    En fait, je voudrais copier ma source de données principale (Infopath) dans un fichier xml... je sais pas si je suis tres clair

  6. #6
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 59
    Points : 47
    Points
    47
    Par défaut
    Salut,
    Je te donne une une piste:

    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
    public void FormEvents_Loading(object sender, LoadingEventArgs e)
    {
       // Create XPathNavigator positioned at the root of the main data 
       // source.
       XPathNavigator myNav = this.MainDataSource.CreateNavigator()
     
       // Select employee field and set value to username.
       myNav.SelectSingleNode("//my:employee",this.NamespaceManager).
     
      //récupérer les noeuds enfants y compris le noeud courant sous forme de
      //chaine de caractère 
      StringBuilder result= new StringBuilder();
      result.Append(myNav.OuterXml);
     
      //création d'un fichier
      TextWriter writer = new StreamWriter("C:\fichier.xml"); //ou bien ton chemin
      writer.Write(result.ToString());
       writer.Close();
     
    }
    Nb: j'ai pas testé ce code, c'est juste une piste...

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    Merci, ça fonctionne très bien.

  8. #8
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 59
    Points : 47
    Points
    47
    Par défaut
    Cool alors . Ben, pense à marquer le sujet comme résolu

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

Discussions similaires

  1. [XL-2010] Obtenir nom de la feuille d'une source de données graphique.
    Par fanlabise31 dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 15/07/2014, 21h35
  2. obtenir le nom de la classe dans une méthode static
    Par einboubou dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 13/11/2009, 16h46
  3. Réponses: 0
    Dernier message: 04/06/2009, 16h59
  4. Réponses: 2
    Dernier message: 26/12/2008, 14h54
  5. Réponses: 5
    Dernier message: 07/09/2007, 17h23

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