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 :

Création IDictionary à partir de fichier xml


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 90
    Par défaut Création IDictionary à partir de fichier xml
    Bonjour,

    j'essaye de créer un IDictionary(Key, Value) avec ce 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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
            Dim DocumentXML As New XmlDocument()
            Dim i As Integer
            Dim Key As String
            Dim ParamsDictionary As IDictionary(Of String, String) = New Dictionary(Of String, String)
            Dim Tag As String()
            Dim TagBis As String
            Dim TagTransformation As String()
            Dim Value As String
     
            DocumentXML.Load("C:\test.xml")
            Tag = PrintParamRow.FIELD.Split(".")
     
           For Each PrintParamRow As dsPrintParams.PRINT_PARAMSRow In Me.PrintParams.dsBD.PRINT_PARAMS
             For Each ParentNode As XmlNode In DocumentXML
                For Each ChildNode As XmlNode In ParentNode.ChildNodes
                     If ChildNode.LocalName = Tag(Tag.GetLowerBound(0)) Then
                             For Each LittleChildNode As XmlNode In ChildNode.ChildNodes
                                If LittleChildNode.LocalName = Tag(Tag.GetUpperBound(0)) Then
                                    Key = PrintParamRow.BOOKMARK
                                    Value = LittleChildNode.InnerText
                                    ParamsDictionary.Add(Key, Value)
                                End If
                            Next
                        End If
                Next
            Next
        Next
        End Function
    Et voici, un petit tableau pour une explication plus claire
    TAG est une balise dans le fichier xml que j'obtiens en prenant la partie droite du FIELD, ensuite j'ajoute le BOOKMARK comme clé et la valeur de TAG dans Valeur
    TAG BOOKMARK FIELD

    OBJET OBJET DOSSIER.OBJET
    DATE_DEMANDE DATEDEMANDE DOSSIER.DATE_DEMANDE
    DATE_AR DATEAR DOSSIER.DATE_AR
    AVISPREALABLE AVISPREALABLE DOSSIER.AVISPREALABLE
    ENQUETE PUBLICITE DOSSIER.ENQUETE
    ID AVIS SERVCOM.ID
    ID IDDOSSIER DOSSIER.IDDOSSIER
    Tout se passe bien jusqu'à la dernière ligne où ça boucle plusieurs fois dessus et me met l'erreur
    Un élèment avec la même clé à déja été ajouté
    De où peut provenir le problème ?

  2. #2
    Membre émérite Avatar de -N4w4k-
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2011
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 545
    Par défaut
    Bonjour,

    Un Dictionary est une collection d'association clé-valeur (KeyValuePair). Cela marche très bien du moment que l'on a que des clés différentes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Dim dico As New Dictionary(Of Integer,String)
    dico.Add(0,"plop")   'ok
    dico.Add(1, "plap")  'ok 
    dico.Add(2, "plop")  'ok
    dico.Add(2, "plip")   'pas ok: la clé 2 existe déjà => Exception: "Un élèment avec la même clé à déja été ajouté"
    '...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Key = PrintParamRow.BOOKMARK
        Value = LittleChildNode.InnerText
        ParamsDictionary.Add(Key, Value)
    La condition pour que ça marche est que l'on ait jamais deux fois la même valeur pour "PrintParamRow.BOOKMARK" sinon tu obtiens l'exception que tu nous a rapporté..

Discussions similaires

  1. remplir datagrid à partir de fichier xml
    Par wajdiisi2007 dans le forum VB 6 et antérieur
    Réponses: 0
    Dernier message: 10/08/2007, 12h27
  2. Réponses: 5
    Dernier message: 17/07/2007, 11h14
  3. iReport à partir d’un fichier XML
    Par jproto dans le forum iReport
    Réponses: 6
    Dernier message: 13/02/2007, 09h11
  4. ComboBox dynamique à partir de fichier XML
    Par ikeaboy dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 28/07/2006, 09h54
  5. [C#]Datagrid à partir de fichier XML(non formaté)
    Par nutball dans le forum Windows Forms
    Réponses: 3
    Dernier message: 26/07/2006, 23h25

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