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

Linq Discussion :

[Linq to Xml] Besoin d'aide pour une requête


Sujet :

Linq

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut [Linq to Xml] Besoin d'aide pour une requête
    Bonjour tout le monde

    J'ai le fichier xml suivant:
    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
    <?xml version="1.0" encoding="utf-8" ?>
    <Template>
      <InputParameters>
        <InputParameter Name="GlobalCaracteristics" />
        <InputParameter Name="SimulationParameters" />
        <InputParameter Name="Amortizing" />
        <InputParameter Name="FixedLeg" />
        <InputParameter Name="FloatingLeg" />
        <InputParameter Name="Fee" />
      </InputParameters>
      <Controls>
        <Control Name="SimulationParameters">
          <Item Name="FIXEDRATE"></Item>
          <Item Name="SPREAD"></Item>
          <Item Name="FEE"></Item>
        </Control>
        <Control Name="Amortizing">
          <Item Name="INFINE"></Item>
          <Item Name="LINEAR"></Item>
        </Control>
      </Controls>
    </Template>
    J'essaye de récupérer l'attribut Name des noeuds fils du noeud Control dont le name est SimulationParameters (donc FIXEDRATE, SPREAD, FEE)

    La requête Linq suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    XDocument xDoc = XDocument.Load("monfichier.xml");
     
            var control = from p in xDoc.Descendants("Control")
                          where ((string)p.Attribute("Name")) == "SimulationParameters"
                          select p;
    me retourne bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
         <Control Name="SimulationParameters">
          <Item Name="FIXEDRATE"></Item>
          <Item Name="SPREAD"></Item>
          <Item Name="FEE"></Item>
        </Control>
    Maintenant, je ne vois pas comment faire pour récupérer l'attribut Name des noeuds fils.

    J'ai essayé différents trucs sans succès.
    Qq'un a une idée ou un site avec plein d'exemples?

    Merci

  2. #2
    Membre émérite Avatar de neptune
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 835
    Par défaut
    Sans jamais avoir fait de Xlinq, mais en suivant l'idée je dirais...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    var control = from p in xDoc.Descendants("Control")
                          where ((string)p.Attribute("Name")) == "SimulationParameters"
                          select new { p.Descendants("Item") };

  3. #3
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Je dirais plutôt ceci:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var control = from p in xDoc.Descendants("Control")
                          where ((string)p.Attribute("Name")) == "SimulationParameters"
                          select new { p.Descendants("Item").Attribute("Name") };

  4. #4
    Membre émérite Avatar de neptune
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 835
    Par défaut
    J'étais pas loin ;-)

  5. #5
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Marche pas

    'System.Collections.Generic.IEnumerable<System.Xml.Linq.XElement>' does not contain a definition for 'Attribute' and no extension method 'Attribute' accepting a first argument of type 'System.Collections.Generic.IEnumerable<System.Xml.Linq.XElement>' could be found (are you missing a using directive or an assembly reference?)

  6. #6
    Rédacteur
    Avatar de The_badger_man
    Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Par défaut
    En fait faut faire deux from:

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    var control = from p in xDoc.Descendants("Control")
              where p.Attribute("Name").Value == "SimulationParameters"
              from i in p.Descendants("Item")
              select new { Name = i.Attribute("Name").Value };
    foreach (var item in control)
    {
        Console.WriteLine(item.Name);
    }
    Les règles du forum
    Le trio magique : FAQ + Cours + fonction rechercher
    Mes articles
    Pas de questions par messages privés svp

    Software is never finished, only abandoned.

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

Discussions similaires

  1. Besoin d'aide pour une requête de MAJ (modif. de car.)
    Par ptitscrat dans le forum Access
    Réponses: 5
    Dernier message: 22/03/2006, 17h27
  2. besoin d'aide pour une requête
    Par lipao17 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 04/01/2006, 16h55
  3. Besoin d'aide pour une requête SQL
    Par Borami dans le forum Langage SQL
    Réponses: 1
    Dernier message: 07/11/2005, 10h33
  4. Besoin d'aide pour une Requête SQL ...
    Par Kokito dans le forum Requêtes
    Réponses: 2
    Dernier message: 07/07/2004, 11h56
  5. besoin d'aide pour une requête
    Par Damien69 dans le forum Langage SQL
    Réponses: 11
    Dernier message: 31/03/2004, 15h38

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