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 en VBnet


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    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
    Par défaut XML et LINQ en VBnet
    Bonjour,

    Je suis un peu perdu avec certain concepts en XML et LINQ.

    1- Quel est la difference entre xmlDocument (xmlElement) et XDocument (XElement)?
    D'apres ce que j'ai compris "xml" est lie aux premieres versions de VS avant VBnet 3.5 et "X" est lie a LINQ.
    Mais d'abord, peut-on melanger les deux et que me conseillez- vous d'utiliser (Je suis en Version 3.5) et pourquoi?

    2- Suite a une question precedente sur ce forum, on m'a donne l'excellente reponse suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim query = xDoc.<BASE>.<DESIGN>.<BUTTON>.Where(Function(item) item.Parent.<ID>.Value = iAD.ToString).Select(Function(item) New With {.Position = item.<POSITION>.Value, .Top = item.<TOP>.Value, .Left = item.<LEFT>.Value})
    Cependant, le code suivant (plus comprehensible pour moi) marche aussi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim query = From item In xDoc.<BASE>.<DESIGN>.<BUTTON> _
                Where (item.Parent.<ID>.Value = iADesign.ToString) _
                Select New With {.Position = item.<POSITION>.Value, .Top = item.<TOP>.Value, .Left = item.<LEFT>.Value}
    Dans le premier cas, il y a un point devant le Where (Probablement du LINQ).
    Donc, dans le deuxieme cas, est-ce considere comme du LINQ ou pas?
    Et comment declarer xDoc?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim xDoc As New XmlDocument = XmlDocument.Load(strFilePath) 'ne marche pas
    Ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim xDoc As XDocument = XDocument.Load(strFilePath) 'marche pour les 2 cas precedents!
    En bref, meme si j'arrive aux resultats esperes, ce n'est pas toujours tres clair. J'ai l'impression de melanger un peu tout.
    De meme, quand j'utilise les Nodes et les Attributs, j'arrive toujours a m'en sortir, mais je ne sais pas toujours ce que je fais.


    Un peu d'eclaircissement serait le bienvenu.
    Ou alors peut-etre un lien qui expliquerait toutes ces differences!

    Merci,
    A+
    JLuc01

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    700
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 700
    Par défaut
    Bonsoir,
    pour la manipulation d'un document XML en mémoire, Les espaces de noms System.Xml offre System.Xml et System.Xml.Linq.

    System.Xml s'appuie entre autres sur une collection d'interfaces de programmation : le DOM. Le DOM est une représentation d'un document XML en une arborescence de Nodes exploitable par tout langage de programmation qui a "une mise en œuvre" DOM.

    System.Xml.Linq (LINQ to XML) utilise les capacités de langage .NET Framework les plus récentes et s'apparente à une interface de programmation XML DOM (Document Object Model) améliorée et mise à jour.(Dixit MSDN)

    Msdn donne une comparaison de LINQ to XML et DOM et les équivalences LINQ to XML pour les utilisateurs XPath.

    Dans le DOM la requête pourrait ressembler à cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
            Dim xmlDoc As New XmlDocument
            xmlDoc.Load(strFilePath)
     
            Dim root As XmlNode = xmlDoc.DocumentElement
            Dim nodeParent As XmlNode = root.SelectSingleNode("descendant::DESIGN[ID=2]")
            Dim buttonList As XmlNodeList = nodeParent.SelectNodes("descendant::BUTTON")
     
            For Each button As XmlNode In buttonList
                Dim butAnonyme = New With {.Position = button("POSITION").InnerXml, .Top = button("TOP").InnerXml, .Left = button("LEFT").InnerXml}
                TextBox1.AppendText(butAnonyme.ToString & Environment.NewLine)
            Next
    Avec LINQ to XML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
            Dim xDoc = XDocument.Load(strFilePath)
     
            Dim query1 = From item In xDoc.<BASE>.<DESIGN>.<BUTTON> _
                        Where (item.Parent.<ID>.Value = "2") _
                        Select New With {.Position = item.<POSITION>.Value, .Top = item.<TOP>.Value, .Left = item.<LEFT>.Value}
     
            For Each x In query1
                TextBox1.AppendText(x.ToString & Environment.NewLine)
            Next

Discussions similaires

  1. XML et LINQ - Clause WHERE
    Par JLuc01 dans le forum VB.NET
    Réponses: 3
    Dernier message: 15/11/2013, 01h45
  2. Fonction pour une liste avec XML to Linq
    Par Pelote2012 dans le forum Linq
    Réponses: 5
    Dernier message: 24/01/2012, 18h55
  3. Architecture XML / requete LINQ
    Par bidault dans le forum Linq
    Réponses: 1
    Dernier message: 06/03/2011, 16h53
  4. Réponses: 9
    Dernier message: 12/11/2010, 07h17
  5. Xml - C# - linq
    Par polochon24 dans le forum C#
    Réponses: 1
    Dernier message: 26/10/2009, 13h46

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