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 : variable non déclarée


Sujet :

Linq

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 36
    Par défaut linq to XML : variable non déclarée
    salut a tous!
    je me suis enfin interessé a la méthode linq to xml pour manipuler un fichier xml,cependant j ai adapté l exemple de bladack01 dans ce post http://www.developpez.net/forums/d86...q/to-linq-xml/ et a la compilation une erreur mais retournée qui dit que "test" n est pas declarée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
        Private Sub edit_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim DocXml As XElement = XElement.Load(fichier)
     
            Dim noeud As XElement = DocXml...<objet>(0) 'enfaite la on choisi en quelque sorte le noeud sur lequel on se place
            Dim ajoutobj = New XElement("testlinq", _
                                          New XElement("ref", test.Ref), _
                                          New XElement("modele", test.modele), _
                                          New XElement("desc", test.desc))
     
            noeud.AddAfterSelf(ajoutobj) ' le addafterself permet d'inséré les nouveau après le noeud sélectionner plus haut ^^
     
     
        End Sub
    je ne sais pas en quoi déclarer test sans que cela ne me retourne une erreur :s

  2. #2
    Membre régulier
    Profil pro
    Développeur .NET
    Inscrit en
    Février 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 11
    Par défaut
    Salut,

    Si je comprend bien tu charge un xml existant et tu y ajoutes le nœud suivant après le premier nœud <objet> que tu trouves :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <testlinq>
         <ref>test.ref</ref>
         <modele>test.modele</modele>
         <desc>test.desc</desc>
    </testlinq>
    Il faut bien déclarer test puisque tu vas l'utiliser pour alimenter la valeur des nœuds.
    test est un objet ? Comment récupères-tu ces valeurs ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 36
    Par défaut
    justement,ce code n étant pas le mien je peine a comprendre tout son contenu.
    néamoins je pense que test serait a valeur que j entrerai en parametre dans une textbox par exemple qui par la suite serait introduite dans le xml...

  4. #4
    Membre régulier
    Profil pro
    Développeur .NET
    Inscrit en
    Février 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 11
    Par défaut
    Dans ce cas tu pourras remplacer les test.ref, test.modele et test.desc par les valeurs des textbox.

    Si tu souhaites uniquement tester ce bout de code, tu peux mettre des valeurs en dur pour passer la compilation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Dim ajoutobj = New XElement("testlinq", _
          New XElement("ref", "UneRef"), _
          New XElement("modele", "UnModele"), _
          New XElement("desc", "UneDesc"))

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 36
    Par défaut
    merci de repondre
    j ai tenté ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     Private Sub edit_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim DocXml As XElement = XElement.Load(fichier)
     
            Dim noeud As XElement = DocXml...<objet>(0) 'enfaite la on choisi en quelque sorte le noeud sur lequel on se place
     
            Dim ajoutobj = New XElement("testlinq", _
          New XElement("ref", "UneRef"), _
          New XElement("modele", "UnModele"), _
          New XElement("desc", "UneDesc"))
     
        End Sub
    et a l execution ca m a retourner element racine manquant...

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 36
    Par défaut
    c est bon je n ai plus se probleme
    j egalement effectué un docXml.save(de mon xml)
    mais...rien ne change dedans ^^

  7. #7
    Membre régulier
    Profil pro
    Développeur .NET
    Inscrit en
    Février 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 11
    Par défaut
    Que souhaites tu faire, générer un nouveau fichier XML avec la structure suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <testlinq>
         <ref>UneRef</ref>
         <modele>UnModele</modele>
         <desc>UneDesc</desc>
    </testlinq>
    ou partir d'un xml existant et lui ajouter le nœud ci-dessus ?
    (le code que tu proposes traite ce cas de figure)
    Dans ce cas, le xml que tu charges avec XElement.Load(fichier) est-il bien formaté ?

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 36
    Par défaut
    oui j ai deja un xml et je souhaiterais y rajouter ce noeud...

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 36
    Par défaut
    pour tester j'ai structuré mon xml de cette maniere...
    est ce la bonne structure?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?xml version="1.0" encoding="utf-8"?>
    <objet>
      <testlinq>
        <ref></ref>
        <modele></modele>
        <desc></desc>
      </testlinq>
    </objet>

  10. #10
    Membre régulier
    Profil pro
    Développeur .NET
    Inscrit en
    Février 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 11
    Par défaut
    Tu as bien fait le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    noeud.AddAfterSelf(ajoutobj)
    car je ne le vois pas dans ton code plus-haut.

    Autre piste, le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim nœud As XElement = DocXml...<objet>(0)
    va chercher le premier noeud <objet> et ajouter le nœud <testlinq> à la suite.
    Existe-t-il bien un nœud <objet> dans le xml de départ ?
    Je suppose que oui sinon la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    noeud.AddAfterSelf(ajoutobj)
    lèverait un exception de type InvalidOperationException car noeud serait égal à Null.

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 36
    Par défaut


    je l avais laissé en commentaire...
    Cependant une fois remis a l execution ca me retourne une erreur de type :

    La référence d'objet n'est pas définie à une instance d'un objet.

  12. #12
    Membre régulier
    Profil pro
    Développeur .NET
    Inscrit en
    Février 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 11
    Par défaut
    Si ton xml de départ ressemble à cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?xml version="1.0" encoding="utf-8"?>
    <objet>
      <testlinq>
        <ref></ref>
        <modele></modele>
        <desc></desc>
      </testlinq>
    </objet>
    il sera formaté de la façon suivante après passage dans ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <?xml version="1.0" encoding="utf-8"?>
    <objet>
      <testlinq>
        <ref></ref>
        <modele></modele>
        <desc></desc>
      </testlinq>
    </objet>
    <testlinq>
        <ref>UneRef</ref>
        <modele>UnModele</modele>
        <desc>UneDesc</desc>
    </testlinq>
    Je ne suis pas sur que c'est ce que tu cherches à obtenir .

    pour ton erreur
    La référence d'objet n'est pas définie à une instance d'un objet
    Vérifie que la variable noeud n'est pas null au moment du
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    noeud.AddAfterSelf(ajoutobj)

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 36
    Par défaut
    si je cherche a obtenir cela
    enfin...Avec mes balise remplie =)
    c'est la structure (simplifié) d un xml que l on m a demandé d utiliser...

    Donc la j avou que je bloque

  14. #14
    Membre régulier
    Profil pro
    Développeur .NET
    Inscrit en
    Février 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 11
    Par défaut
    En debug, cela plante sur quelle ligne ?

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 36
    Par défaut
    sur :

    noeud.AddAfterSelf(ajoutobj)

    =>
    La référence d'objet n'est pas définie à une instance d'un objet.
    mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim DocXml As XElement = XElement.Load(fichier)
     
            Dim noeud As XElement = DocXml...<objet>(0) 'enfaite la on choisi en quelque sorte le noeud sur lequel on se place
     
            Dim ajoutobj = New XElement("testlinq", _
          New XElement("ref", "UneRef"), _
          New XElement("modele", "UnModele"), _
          New XElement("desc", "UneDesc"))
            noeud.AddAfterSelf(ajoutobj)
            'DocXml.Save("D:\Users\TeamSolutions\Documents\Visual Studio 2008\Projects\tttxmm\WindowsApplication2\WindowsApplication2\xml\InventorWoodDatas.xml")
            DocXml.Save("D:\testbok.xml")
        End Sub
    et mon xml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?xml version="1.0" encoding="utf-8"?>
    <objet>
      <testlinq>
        <ref></ref>
        <modele></modele>
        <desc></desc>
      </testlinq>
    </objet>

  16. #16
    Membre régulier
    Profil pro
    Développeur .NET
    Inscrit en
    Février 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 11
    Par défaut
    C'est que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim noeud As XElement = DocXml...<objet>(0)
    ne fonctionne pas.

    Je connais pas trop cette syntaxe. Essaye plutôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim noeud as XElement = DocXml.Element("objet");
    Il serait plus propre de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    if (noeud != Null) Then
       Dim ajoutobj = New XElement("testlinq", _
          New XElement("ref", "UneRef"), _
          New XElement("modele", "UnModele"), _
          New XElement("desc", "UneDesc"))
       noeud.AddAfterSelf(ajoutobj)
    End if
    pour éviter ce genre d'erreur à l'exécution.

  17. #17
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 36
    Par défaut
    VB.net il n aime pas trop :

    if (noeud != Null)

    et il n aime pas nan plus if (noeud <>0)

  18. #18
    Membre régulier
    Profil pro
    Développeur .NET
    Inscrit en
    Février 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 11
    Par défaut
    Il faut chercher un peu.
    Google est ton ami.
    Je pense que tu devrais t'en sortir tout seul maintenant

  19. #19
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 36
    Par défaut
    oui désolé j ai manqué de lucidité la ^^
    je vais chercher un peu alors

    mais cependant, pour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     noeud.AddAfterSelf(ajoutobj)
    ca me renvoi toujours

    La référence d'objet n'est pas définie à une instance d'un objet.
    au deboguage

  20. #20
    Membre régulier
    Profil pro
    Développeur .NET
    Inscrit en
    Février 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 11
    Par défaut
    En debug c'est noeud ou ajoutobj qui vaut Null ?

    Sinon je t'invite à consulter la msdn :
    http://msdn.microsoft.com/fr-fr/libr...8VS.95%29.aspx

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 6
    Dernier message: 31/12/2008, 10h59
  2. Option Explicit et erreur variable non déclarée
    Par petitours dans le forum VBA Access
    Réponses: 2
    Dernier message: 23/04/2008, 15h38
  3. [Design] Erreur variable non déclarée ou non assignée
    Par Arnard dans le forum Visual Studio
    Réponses: 3
    Dernier message: 19/12/2007, 17h53
  4. Problème de variable non déclarée
    Par jncoffy dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 24
    Dernier message: 06/06/2007, 11h01
  5. variable non déclarée?
    Par carole8 dans le forum C
    Réponses: 15
    Dernier message: 30/11/2006, 16h13

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