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

VB.NET Discussion :

XML et LINQ - Clause WHERE


Sujet :

VB.NET

  1. #1
    Membre régulier
    Homme Profil pro
    Scientist
    Inscrit en
    Mai 2013
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Scientist
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2013
    Messages : 110
    Points : 87
    Points
    87
    Par défaut XML et LINQ - Clause WHERE
    Bonjour,

    J'essaye de recuperer des valeurs d'un fichier XML, mais sans le resultat espere.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
            Dim xDoc = XDocument.Load(strFilePath)
            Dim query = From item In xDoc.<BASE>.<DESIGN> _
                        Where item.<ID>.Value = "1" _
                        Select New With {.Position = item.<BUTTON>.<POSITION>.Value, .Top = item.<BUTTON>.<TOP>.Value, .Left = item.<BUTTON>.<LEFT>.Value}
           ...
           For Each x In query
           ...
    Avec la structure XML suivante:
    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
    38
    <BASE>
      <DESIGN>
        <ID>1</ID>
        <BUTTON>
          <POSITION>P</POSITION>
          <TOP>20</TOP>
          <LEFT>20</LEFT>
        </BUTTON>
        <BUTTON>
          <POSITION>L</POSITION>
          <TOP>20</TOP>
          <LEFT>100</LEFT>
        </BUTTON>
        <BUTTON>
          <POSITION>P</POSITION>
          <TOP>20</TOP>
          <LEFT>220</LEFT>
        </BUTTON>
      </DESIGN>
      <DESIGN>
        <ID>2</ID>
        <BUTTON>
          <POSITION>L</POSITION>
          <TOP>20</TOP>
          <LEFT>20</LEFT>
        </BUTTON>
        <BUTTON>
          <POSITION>P</POSITION>
          <TOP>20</TOP>
          <LEFT>140</LEFT>
        </BUTTON>
        <BUTTON>
          <POSITION>L</POSITION>
          <TOP>20</TOP>
          <LEFT>220</LEFT>
        </BUTTON>
      </DESIGN>
    </BASE>
    En mode Debug, la variable 'query' n'a que les parametres du premier BUTTON pour un ID="1", alors qu' il y a 3 BUTTONs.

    Bref, je tourne en rond sans parvenir a mon but.
    Si quelqu'un a une idee?

    De plus, la variable 'query' est de type System.Collections.Generic.IEnumerable(Of <anonymous type>) d'apres "l'intellisens". Pourquoi, je ne peux pas ecrire?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim query As System.Collections.Generic.IEnumerable(Of<anonymous type>)
    Car en general, j'aime bien savoir qui est quoi.

    A+
    JLuc01

  2. #2
    Membre expert
    Avatar de GuruuMeditation
    Homme Profil pro
    .Net Architect
    Inscrit en
    Octobre 2010
    Messages
    1 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net Architect
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Points : 3 568
    Points
    3 568
    Par défaut
    Me rappelle plus de la syntaxe exacte avec LINQ XML mais tu dois demander tous les éléments bouttons (méthode Elements("BUTTON") ?) du design, et après itérer dessus.

    C'est normal que tu ais un type anonyme avec select new {} parce que tu crée un type à la volée. C'est pour ça que le type anonyme et "var" on été introduits. Si tu veux avoir un type précis, alors tu dois créer une classe C, par exemple, et faire un select new C{....}
    Microsoft MVP : Windows Platform

    MCPD - Windows Phone Developer
    MCPD - Windows Developer 4

    http://www.guruumeditation.net

    “If debugging is the process of removing bugs, then programming must be the process of putting them in.”
    (Edsger W. Dijkstra)

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    665
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 665
    Points : 1 161
    Points
    1 161
    Par défaut
    Bonsoir,
    à voir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim query = xDoc.<BASE>.<DESIGN>.<BUTTON>.Where(Function(item) item.Parent.<ID>.Value = "1").Select(Function(a) a.Value)
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Dim query = xDoc.<BASE>.<DESIGN>.<BUTTON>.Where(Function(item) item.Parent.<ID>.Value = "2").Select(Function(item) New With {.Position = item.<POSITION>.Value, .Top = item.<TOP>.Value, .Left = item.<LEFT>.Value})

  4. #4
    Membre régulier
    Homme Profil pro
    Scientist
    Inscrit en
    Mai 2013
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Scientist
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2013
    Messages : 110
    Points : 87
    Points
    87
    Par défaut
    Bonsoir,

    chrismonoye: Impecable, la deuxieme ligne me donne exactement ce que je voulais.

    Maintenant, il ne me reste plus qu'a comprendre en detail la syntaxe qui n'est pas si evidente pour moi, meme après une visite (probablement trop courte) dans les 101 exemples XML-LINQ MSDN.

    Merci pour tout.

    A+
    JLuc01

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

Discussions similaires

  1. LINQ avec plusieurs clauses WHERE et C#
    Par Cedric33 dans le forum Linq
    Réponses: 23
    Dernier message: 22/11/2011, 14h29
  2. LINQ clause where + ID entity
    Par Kikuts dans le forum Linq
    Réponses: 2
    Dernier message: 15/04/2011, 14h09
  3. [Linq to SQL] Clause Where dynamique
    Par Kamishu dans le forum Accès aux données
    Réponses: 2
    Dernier message: 14/08/2008, 14h17
  4. [LINQ To SQL] Clauses WHERE dynamiques
    Par SaumonAgile dans le forum Accès aux données
    Réponses: 7
    Dernier message: 23/02/2008, 01h11
  5. [ character en simple cote ] clause Where
    Par hocinema dans le forum DB2
    Réponses: 3
    Dernier message: 20/02/2004, 10h17

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