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 :

Ecriture Lecture XML en VB.net


Sujet :

VB.NET

  1. #1
    Membre éprouvé Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 931
    Par défaut Ecriture Lecture XML en VB.net
    Bonjour à tous,

    Je recherche un tuto pour expliquer comment se servir des fichiers XML avec VB.net (2008).

    Le but:
    On doit récupérer les mesures de plusieurs types de supervision.
    Donc:
    Plusieurs mesures tension courant etc. Et chaque ligne de commande est bien sur différente suivant ce que l’on appel.

    Supervision 1 on veut la tension batterie le code a envoyer a la supervision 1 est le RDAT/.....
    Etc.

    Pour cela on me demande de stocker ces informations en XML. A l'ouverture de mon logiciel on fait le choix de la supervision à analyser puis on doit donc lire le fichier XML et récupérer tout ce que l'on peut y faire avec le code associer. Je dois pouvoir stocker le nom de la mesure et le code dans des variables pour après pouvoir les traiter.
    Chaque supervision n'a pas les mêmes possibilités. On à donc plus ou moins de mesures possible. Le code de la tension batterie par exemple n'est pas le même d'une supervision à l'autre.

    De plus à partir de mon logiciel dans une partie protégé par mot de passe (d'ailleurs faut que je rencarde la dessus aussi) Il doit être possible de rajouter des mesures pour chaque supervision.

    A chaque fois il s’agit uniquement d'un nom de la variable et du code associé.

    Merci de votre aide si vous avez quelque chose à me conseiller. J’ai regardé l'excellent tuto de M.Philippe Lasserre mais la je galère et comprend pas tout.
    J'ai regardé aussi http://selkis.developpez.com/tutoriels/dotnet/Xmlpart1/ .

    Merci

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par megamario Voir le message
    J’ai regardé l'excellent tuto de M.Philippe Lasserre mais la je galère et comprend pas tout.
    J'ai regardé aussi http://selkis.developpez.com/tutoriels/dotnet/Xmlpart1/.
    Qu'est-ce que tu ne comprends pas dans ces tutos ?

    Sinon, si le schema XML est simple tu peux aussi utiliser la sérialisation XML. Tu peux regarder mon tuto ici (c'est du C#, mais le principe est exactement le même en VB.NET)

  3. #3
    Membre éprouvé Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 931
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Qu'est-ce que tu ne comprends pas dans ces tutos ?

    Sinon, si le schema XML est simple tu peux aussi utiliser la sérialisation XML. Tu peux regarder mon tuto ici (c'est du C#, mais le principe est exactement le même en VB.NET)

    Bonjour et merci d'avoir répondu.

    En ce qui concerne les tuto déjà regardé.
    Je comprends en faite le principe d'écriture (pas comment écrire mais la forme d'écriture). Par contre en suivant les tuto et en essayant les codes présenté j'arrive a rien. Je débute en VB et en cours on a fait que du C++ sous C++buildeur.
    Je viens de trouver un petit programme qui tourne et je suis en train d'analisé le code, faire des modifs pour voir ce que cela change etc.
    Pour le moment j'avance un peut, mais je vais regarder votre tuto. Je l'avais déjà vu mais je ne voyais pas ce que le principe de sérialisation pouvait m'apporter donc je l'avais mis de coté pour le moment. Mais je vais y revenir du coup si cela peut m’aider à avancer.

    Sur le petit prog que j'analyse je n'est pas la lecture donc je vais essayer de le modifier pour voir ce que je peut en apprendre

  4. #4
    Membre éprouvé Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 931
    Par défaut
    En faite ce que je voudrais arriver a faire c'est sa:

    Code XML : 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
    <Mesure>
        <supervision1>
          <Nom>U Utilisation              'Je veux ecrire et recup le nom
            <Object>RDAT/M_0</Object>  'Et les 2 parmettres associer sont pour
            <Attribut>2</Attribut>          'L'interogation de la supervision
            <Format>0.01</Format>        'Ce paramettre c'est pour les unitées
          </Nom>
          <Nom>I Utilisation
            <Object>RDAT/M_0</Object>
            <Attribut>3</Attribut>
            <Format>0.01</Format>
          </Nom>
          </Nom>U Batterie
            <Object>RDAT/M_1</Object>
            <Attribut>3</Attribut>
            <Format>0.01</Format>
          </Nom>
        </supervision1>
        <supervision2>
          <Nom>U Utilisation
            <Object>RDAT/S_0</Object>
            <Attribut>2</Attribut>
            <Format>0.01</Format>
          </Nom>
          </Nom>I Utilisation
            <Object>RDAT/S_0</Object>
            <Attribut>3</Attribut>
            <Format>0.01</Format>
          </Nom>
          <Nom>U Batterie
            <Object>RDAT/S_1</Object>
            <Attribut>3</Attribut>
            <Format>0.01</Format>
          </Nom>
        </supervision2>
    </Mesure>


    Voila le principe que je voudrais avoir par contre je dit pas du tout que faut que se soit ecrit comme sa car je sais pas si je peut mettre les balises avec le même nom comme sa.

  5. #5
    Membre éprouvé Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 931
    Par défaut Dans le tuto de "M.Philippe Lasserre "
    En regardant le tuto de M. Philippe Lasserre je suis un peut perdu:ICIhttp://plasserre.developpez.com/cour...e=poo3#LXV-H-5

    Si j'essaie de suivre ce qu'il indique ou même copier le code, cela m'indique toujours des erreurs.
    en copiant le code complet:
    Exemple 3 : Sérialisation d'une collection

    notament pour:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Public addresses As New Hashtable
            addresses.Add("Phil", "12 grand rue,69872")
            addresses.Add("Bob", "98 petite rue, 196")
            addresses.Add("Marie", "BP 89, Paris, 75200")
    Sur les 3 lignes il me souligne adresses avec "déclaration attendu"

    et il me dit que amp n'est pas declaré et que le caractère ; de &amp; n'est pas valide.
    dans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Console.WriteLine("Echec serialisation. Cause: " &amp; e.Message)
    Je suis vraiment paumer la, je trouve plein d'exemple mais j'arrive à rien.

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par megamario Voir le message
    En faite ce que je voudrais arriver a faire c'est sa:

    Code XML : 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
    <Mesure>
        <supervision1>
          <Nom>U Utilisation              'Je veux ecrire et recup le nom
            <Object>RDAT/M_0</Object>  'Et les 2 parmettres associer sont pour
            <Attribut>2</Attribut>          'L'interogation de la supervision
            <Format>0.01</Format>        'Ce paramettre c'est pour les unitées
          </Nom>
          <Nom>I Utilisation
            <Object>RDAT/M_0</Object>
            <Attribut>3</Attribut>
            <Format>0.01</Format>
          </Nom>
          </Nom>U Batterie
            <Object>RDAT/M_1</Object>
            <Attribut>3</Attribut>
            <Format>0.01</Format>
          </Nom>
        </supervision1>
        <supervision2>
          <Nom>U Utilisation
            <Object>RDAT/S_0</Object>
            <Attribut>2</Attribut>
            <Format>0.01</Format>
          </Nom>
          </Nom>I Utilisation
            <Object>RDAT/S_0</Object>
            <Attribut>3</Attribut>
            <Format>0.01</Format>
          </Nom>
          <Nom>U Batterie
            <Object>RDAT/S_1</Object>
            <Attribut>3</Attribut>
            <Format>0.01</Format>
          </Nom>
        </supervision2>
    </Mesure>


    Voila le principe que je voudrais avoir par contre je dit pas du tout que faut que se soit ecrit comme sa car je sais pas si je peut mettre les balises avec le même nom comme sa.
    Ce schema ne me semble pas idéal... D'abord, il vaut mieux avoir des éléments XML qui ont toujours le même nom, c'est beaucoup plus simple à gérer... il vaudrait mieux avoir un élément "supervision" avec un attribut ou un sous-élément "id"

    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <supervision id="1">
    ...
     
    <!-- ou encore : -->
     
    <supervision>
        <Id>1</Id>
        ...

    D'autre part, bien que ce soit légal en XML (je crois), on évite généralement de mélanger du texte et des sous-éléments sous le même élément. Donc pour ton élément "Nom", j'aurais plutôt fait un élément "Item" comme ça, avec le nom comme sous-élément :

    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
          <Item>
            <Nom>U Utilisation</Nom>
            <Object>RDAT/S_0</Object>
            <Attribut>2</Attribut>
            <Format>0.01</Format>
          </Item>

    Citation Envoyé par megamario Voir le message
    En regardant le tuto de M. Philippe Lasserre je suis un peut perdu:ICIhttp://plasserre.developpez.com/cour...e=poo3#LXV-H-5

    Si j'essaie de suivre ce qu'il indique ou même copier le code, cela m'indique toujours des erreurs.
    en copiant le code complet:
    Exemple 3 : Sérialisation d'une collection

    notament pour:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Public addresses As New Hashtable
            addresses.Add("Phil", "12 grand rue,69872")
            addresses.Add("Bob", "98 petite rue, 196")
            addresses.Add("Marie", "BP 89, Paris, 75200")
    Sur les 3 lignes il me souligne adresses avec "déclaration attendu"

    et il me dit que amp n'est pas declaré et que le caractère ; de &amp; n'est pas valide.
    dans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Console.WriteLine("Echec serialisation. Cause: " &amp; e.Message)
    Je suis vraiment paumer la, je trouve plein d'exemple mais j'arrive à rien.
    L'exemple que tu as regardé ne concerne pas la sérialisation XML mais la sérialisation binaire... En ce qui concerne les erreurs :
    - sur addresses : il te manque sans doute un Imports System.Collections
    - sur le &amp; : c'est une erreur dans l'article (&amp; est le code HTML pour le caractère '&')

    Je ne te conseille pas de te baser sur ce cours pour apprendre le XML, visiblement tout est mélangé... (sérialisation binaire, XML, SOAP...)


    Pour faire simple, je te suggère la structure suivante pour tes classes :

    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
    Imports System.Xml.Serialization
     
    Public Class Item
        Public Nom As String
        <XmlElement("Object")>
        Public Obj As String ' Le mot "Object" étant un mot-clef réservé, on met Obj à la place
        Public Attribut As Integer
        Public Format As Double
    End Class
     
    Public Class Supervision
     
        Public Id As Integer
     
        <XmlElement("Item")>
        Public Items As New List(Of Item)()
     
    End Class
     
    Public Class Mesure
        <XmlElement("supervision")>
        Public supervisions As New List(Of Supervision)()
    End Class
    Ensuite, pour sérialiser en XML un objet Mesure, il suffit de faire comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim m As New Mesure
    ...
    Dim xs As New XmlSerializer(GetType(Integer))
    Using StreamWriter sw As New StreamWriter("mesure.xml")
        xs.Serialize(sw, m)
    End Using
    Tu devrais obtenir à peu près le résultat voulu...

    Pour plus de détails, regarde le tuto que je t'ai indiqué plus haut

  7. #7
    Membre éprouvé Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 931
    Par défaut
    Merci beaucoup pour cette aide précieuse et du temps passé pour faire tout sa.

    Je vais regarder sa attentivement et essayer de comprendre. Je vous tiens au courant.

  8. #8
    Membre éprouvé Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 931
    Par défaut
    J'ai un petit defaut dans le code que vous m'avez donner

    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
     
     
    Imports System.Xml.Serialization
     
    Public Class Item
        Public Nom As String
        <XmlElement("Object")>       ' Il me met une erreur ICI il me dit qu'il faut mettre le caractere _ pour passer a la ligne suivante
        Public Obj As String ' Le mot "Object" étant un mot-clef réservé, on met Obj à la place
        Public Attribut As Integer
        Public Format As Double
    End Class
     
    Public Class Supervision
     
        Public Id As Integer
     
        <XmlElement("Item")>                'Idem        
        Public Items As New List(Of Item)()
     
    End Class
     
    Public Class Mesure
        <XmlElement("supervision")>       'Idem
        Public supervisions As New List(Of Supervision)()
    End Class
    Si non le but c'est que j'arrive a retrouvé mes petits.
    L'utilisateur choisi la supervision qu'il a, puis apres cela doit charger toute les mesures disponible pour cette supervision. Il faut aussi que sa charge toutes le entree disponible. Je pense que je le ferais en 2 fichiers pour bien distinguer mesures et entree.
    une fois que mesure sera fait l'autre sera identique.

    En utilisation final seul la lecture sera disponible par contre un mode administrateur devra permettre d'en ajouter.

    Je verais sa demain a tête reposé car la sa chauffe . Mais je regarderais de chez moi si d'autre info son posté. Merci encore, bonne soirée

  9. #9
    Membre éprouvé Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 931
    Par défaut
    Bonjour,

    Je suis toujours bloquer, j'arrive pas a reproduire le tuto en c# pour le mettre en VB.net

    Dans l'exemple j'ai aussi un défaut ICI:

    Using StreamWriter sw As New StreamWriter("mesure.xml")

    Il m'indique un defaut du 1er streamWriter que c'est un type et qu'il ne peut pas etre utilisé comme expression et sur le reste il m'indique fin d'instruction attendu.

    Merci

  10. #10
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Using sw As New StreamWriter("mesure.xml")
    Si tu veux il y a un convertisseur C# <=> VB.NET ici :
    http://convertisseur.developpez.com/converter.aspx

  11. #11
    Membre éprouvé Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 931
    Par défaut
    Merci

  12. #12
    Membre éprouvé Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 931
    Par défaut Le retour - Je deprime
    Bonjour à tous, après plusieurs essaie et aide trouver ici et la sur le net j'était arriver a lire et modifier mes fichiers XML avec la serialisation. Cela tournait mais j'avais 2 fichiers par système un pour les mesures l'autre pour les entrées multiplier par le nombre de système.

    Après, enfin, une réunion pour posé le cahier des charges je doit modifier pour avoir qu'un seul fichier et respecter une forme particulière.
    La voici

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
     
    <?xml version="1.0" encoding="utf-8"?>
    <config>
      <type version="Supervision1">
        <mesures>
          <item>
            <Nom>U Batterie Supervision1</Nom>
            <Obj>RDAT/5_1/</Obj>
            <Ind>2</Ind>
            <Format>100</Format>
            <Unit>V</Unit>
            <Selection>false</Selection>
            <SelectInter>false</SelectInter>
            <SeuilInter>0</SeuilInter>
          </item>
          <item>
            <Nom>I Batterie Supervision1</Nom>
            <Obj>RDAT/6_1/</Obj>
            <Ind>3</Ind>
            <Format>100</Format>
            <Unit>A</Unit>
            <Selection>false</Selection>
            <SelectInter>false</SelectInter>
            <SeuilInter>0</SeuilInter>
          </item>
          <item>
            <Nom>U Util Supervision1</Nom>
            <Obj>RDAT/5_1/</Obj>
            <Ind>4</Ind>
            <Format>100</Format>
            <Unit>V</Unit>
            <Selection>false</Selection>
            <SelectInter>false</SelectInter>
            <SeuilInter>0</SeuilInter>
          </item>
        </mesures>
        <entrees>
          <item>
            <Nom>CFD Supervision1</Nom>
            <Obj>RDAT/9_1/</Obj>
            <Ind>9</Ind>
            <Format>100</Format>
            <Selection>false</Selection>
            <SelectInter>false</SelectInter>
          </item>
          <item>
            <Nom>Alarm Supervision1</Nom>
            <Obj>RDAT/8_1/</Obj>
            <Ind>8</Ind>
            <Format>100</Format>
            <Selection>false</Selection>
            <SelectInter>false</SelectInter>
          </item>
        </entrees>
      </type>
      <type version="Supervision2">
        <mesures>
          <item>
            <Nom>U Batterie Supervision2</Nom>
            <Obj>RDAT/5_1/</Obj>
            <Ind>2</Ind>
            <Format>100</Format>
            <Unit>V</Unit>
            <Selection>false</Selection>
            <SelectInter>false</SelectInter>
            <SeuilInter>0</SeuilInter>
          </item>
          <item>
            <Nom>I Batterie Supervision2</Nom>
            <Obj>RDAT/6_1/</Obj>
            <Ind>3</Ind>
            <Format>100</Format>
            <Unit>A</Unit>
            <Selection>false</Selection>
            <SelectInter>false</SelectInter>
            <SeuilInter>0</SeuilInter>
          </item>
          <item>
            <Nom>U Util Supervision2</Nom>
            <Obj>RDAT/5_1/</Obj>
            <Ind>4</Ind>
            <Format>100</Format>
            <Unit>V</Unit>
            <Selection>false</Selection>
            <SelectInter>false</SelectInter>
            <SeuilInter>0</SeuilInter>
          </item>
        </mesures>
        <entrees>
          <item>
            <Nom>CFD Supervision2</Nom>
            <Obj>RDAT/9_1/</Obj>
            <Ind>9</Ind>
            <Format>100</Format>
            <Selection>false</Selection>
            <SelectInter>false</SelectInter>
          </item>
          <item>
            <Nom>Alarm Supervision2</Nom>
            <Obj>RDAT/8_1/</Obj>
            <Ind>8</Ind>
            <Format>100</Format>
            <Selection>false</Selection>
            <SelectInter>false</SelectInter>
          </item>
        </entrees>
      </type>
      <type version="Supervision3">
        <mesures>
          <item>
            <Nom>U Batterie Supervision3</Nom>
            <Obj>RDAT/5_1/</Obj>
            <Ind>2</Ind>
            <Format>100</Format>
            <Unit>V</Unit>
            <Selection>false</Selection>
            <SelectInter>false</SelectInter>
            <SeuilInter>0</SeuilInter>
          </item>
          <item>
            <Nom>I Batterie Supervision3</Nom>
            <Obj>RDAT/6_1/</Obj>
            <Ind>3</Ind>
            <Format>100</Format>
            <Unit>A</Unit>
            <Selection>false</Selection>
            <SelectInter>false</SelectInter>
            <SeuilInter>0</SeuilInter>
          </item>
          <item>
            <Nom>U Util Supervision3</Nom>
            <Obj>RDAT/5_1/</Obj>
            <Ind>4</Ind>
            <Format>100</Format>
            <Unit>V</Unit>
            <Selection>false</Selection>
            <SelectInter>false</SelectInter>
            <SeuilInter>0</SeuilInter>
          </item>
        </mesures>
        <entrees>
          <item>
            <Nom>CFD Supervision3</Nom>
            <Obj>RDAT/9_1/</Obj>
            <Ind>9</Ind>
            <Format>100</Format>
            <Selection>false</Selection>
            <SelectInter>false</SelectInter>
          </item>
          <item>
            <Nom>Alarm Supervision3</Nom>
            <Obj>RDAT/8_1/</Obj>
            <Ind>8</Ind>
            <Format>100</Format>
            <Selection>false</Selection>
            <SelectInter>false</SelectInter>
          </item>
        </entrees>
      </type>
      <type version="Supervision4">
        <mesures>
          <item>
            <Nom>U Batterie Supervision4</Nom>
            <Obj>RDAT/5_1/</Obj>
            <Ind>2</Ind>
            <Format>100</Format>
            <Unit>V</Unit>
            <Selection>false</Selection>
            <SelectInter>false</SelectInter>
            <SeuilInter>0</SeuilInter>
          </item>
          <item>
            <Nom>I Batterie Supervision4</Nom>
            <Obj>RDAT/6_1/</Obj>
            <Ind>3</Ind>
            <Format>100</Format>
            <Unit>A</Unit>
            <Selection>false</Selection>
            <SelectInter>false</SelectInter>
            <SeuilInter>0</SeuilInter>
          </item>
          <item>
            <Nom>U Util Supervision4</Nom>
            <Obj>RDAT/5_1/</Obj>
            <Ind>4</Ind>
            <Format>100</Format>
            <Unit>V</Unit>
            <Selection>false</Selection>
            <SelectInter>false</SelectInter>
            <SeuilInter>0</SeuilInter>
          </item>
        </mesures>
        <entrees>
          <item>
            <Nom>CFD Supervision4</Nom>
            <Obj>RDAT/9_1/</Obj>
            <Ind>9</Ind>
            <Format>100</Format>
            <Selection>false</Selection>
            <SelectInter>false</SelectInter>
          </item>
          <item>
            <Nom>Alarm Supervision4</Nom>
            <Obj>RDAT/8_1/</Obj>
            <Ind>8</Ind>
            <Format>100</Format>
            <Selection>false</Selection>
            <SelectInter>false</SelectInter>
          </item>
        </entrees>
      </type>
      <type version="Supervision5">
        <mesures>
          <item>
            <Nom>U Batterie Supervision5</Nom>
            <Obj>RDAT/5_1/</Obj>
            <Ind>2</Ind>
            <Format>100</Format>
            <Unit>V</Unit>
            <Selection>false</Selection>
            <SelectInter>false</SelectInter>
            <SeuilInter>0</SeuilInter>
          </item>
          <item>
            <Nom>I Batterie Supervision5</Nom>
            <Obj>RDAT/6_1/</Obj>
            <Ind>3</Ind>
            <Format>100</Format>
            <Unit>A</Unit>
            <Selection>false</Selection>
            <SelectInter>false</SelectInter>
            <SeuilInter>0</SeuilInter>
          </item>
          <item>
            <Nom>U Util Supervision5</Nom>
            <Obj>RDAT/5_1/</Obj>
            <Ind>4</Ind>
            <Format>100</Format>
            <Unit>V</Unit>
            <Selection>false</Selection>
            <SelectInter>false</SelectInter>
            <SeuilInter>0</SeuilInter>
          </item>
        </mesures>
        <entrees>
          <item>
            <Nom>CFD Supervision5</Nom>
            <Obj>RDAT/9_1/</Obj>
            <Ind>9</Ind>
            <Format>100</Format>
            <Selection>false</Selection>
            <SelectInter>false</SelectInter>
          </item>
          <item>
            <Nom>Alarm Supervision5</Nom>
            <Obj>RDAT/8_1/</Obj>
            <Ind>8</Ind>
            <Format>100</Format>
            <Selection>false</Selection>
            <SelectInter>false</SelectInter>
          </item>
        </entrees>
      </type>
    </config>
    Pour la lecture j'utilise une Hashtable accoupler a une classe la key étant le nom du contrôle il est aussi intégrer dans la classe. J'utilise le DOM pour la lecture.

    Par contre j'arrive toujours pas a modifier le fichier, je m'énerve dessus depuis jeudi. j'ai essayé avec le DOM avec le path mais rien y fait. je commence a désespérer.

    En faite je veux pouvoir rajouter.
    Dans un type donnée: exemple Supervision5
    Puis en mesure ou en entrée: disons pour l'essaie en Mesure

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <item>
            <Nom>Bidule Supervision5</Nom>
            <Obj>RDAT/8_1/</Obj>
            <Ind>5</Ind>
            <Format>100</Format>
            <Unit>V</Unit>
            <Selection>false</Selection>
            <SelectInter>false</SelectInter>
            <SeuilInter>0</SeuilInter>
    </item>
    Suite a la réunion il faut aussi que je puisse enregistrer un nouveau fichier XML avec la configuration en cours. Après que l'utilisateur a renseigné si il voulais ou pas tel ou tel contrôle et après avoir renseigné les seuils etc. Dans se fichier il ne peut très bien y avoir que les nœuds choisi (par exemple tout ceux de la version Supervision4, mesures et entrées) ou la totalité du fichier XML d'origine mais modifier sur la partie concerné.

    J'espère que vous pourrez m'aider car la j'en peut plus. J'arrive pas a trouver un tuto vraiment bien expliquer qui pourrais au final ressembler a ce que j'ai besoin.

    Merci de votre aide éventuel

  13. #13
    Membre éprouvé Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 931
    Par défaut
    En faite c'est comment accéder a la partie concerner pour y écrire sa:

    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
     
    Dim Co As item  'classe pour ma collection
    Co = Coll(key)   'Remplissage de la classe par les valeurs de mon Hastable à la clef concerné
     
    Dim Aj As XElement = _
                              <item>
                                      <Nom><%= Co.Nom %></Nom>
                                      <Obj><%= Co.Obj %></Obj>
                                      <Ind><%= Co.Ind %></Ind>
                                      <Format><%= Co.Format.ToString %></Format>
                                      <Unit><%= Co.Unit %></Unit>
                                      <Selection><%= Co.Selection.ToString %></Selection>
                                      <SelectInter><%= Co.SelectInter.ToString %></SelectInter>
                                       <SeuilInter><%= Co.SeuilInter.ToString %></SeuilInter>
                             </item>
    Puis ensuite le sauvegarder.

  14. #14
    Membre éprouvé Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 931
    Par défaut Trouver
    J'ai enfin trouvé.

    Voici 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
    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
     
    Public Sub WriteXML(ByVal filename As String, ByVal VerSup As String, ByVal Tp As String, ByVal k As String)
            Try
                Dim Elem, ElNom, ElObj, ElInd, ElFormat, ElUnit, ElSelection, ElSelectInter, ElSeuilInter As XmlElement
                Dim Typ, Types As XmlNode
                Doc = New Xml.XmlDocument
                Doc.Load(filename)
                Dim root As XmlNode = Doc.DocumentElement
     
                ListXml = Doc.GetElementsByTagName("type")
                Dim Co As Items = CollMesure(k) ' Initialisation de la collection
                If Tp = "mesures" Then
                    Co = CollMesure(k)
                    For Each Typ In ListXml
                        If Typ.Attributes("version").Value = VerSup Then
                            For Each Types In Typ
                                If Types.LocalName = "mesures" Then
                                    Elem = Doc.CreateElement("item")
                                    ElNom = Doc.CreateElement("Nom")
                                    ElObj = Doc.CreateElement("Obj")
                                    ElInd = Doc.CreateElement("Ind")
                                    ElFormat = Doc.CreateElement("Format")
                                    ElUnit = Doc.CreateElement("Unit")
                                    ElSelection = Doc.CreateElement("Selection")
                                    ElSelectInter = Doc.CreateElement("SelectInter")
                                    ElSeuilInter = Doc.CreateElement("SeuilInter")
                                    ElNom.InnerText = Co.Nom
                                    ElObj.InnerText = Co.Obj
                                    ElInd.InnerText = Co.Ind
                                    ElFormat.InnerText = Co.Format
                                    ElUnit.InnerText = Co.Unit
                                    ElSelection.InnerText = Co.Selection
                                    ElSelectInter.InnerText = Co.SelectInter
                                    ElSeuilInter.InnerText = Co.SeuilInter
                                    Elem.AppendChild(ElNom)
                                    Elem.AppendChild(ElNom)
                                    Elem.AppendChild(ElObj)
                                    Elem.AppendChild(ElInd)
                                    Elem.AppendChild(ElFormat)
                                    Elem.AppendChild(ElUnit)
                                    Elem.AppendChild(ElSelection)
                                    Elem.AppendChild(ElSelectInter)
                                    Elem.AppendChild(ElSeuilInter)
                                    Types.InsertAfter(Elem, Types.LastChild)
                                End If
                            Next
                        End If
                    Next
                End If
                If Tp = "entrees" Then
                    Co = CollEntree(k)
                    For Each Typ In ListXml
                        If Typ.Attributes("version").Value = VerSup Then
                            For Each Types In Typ
                                If Types.LocalName = "entrees" Then
                                    Elem = Doc.CreateElement("item")
                                    ElNom = Doc.CreateElement("Nom")
                                    ElObj = Doc.CreateElement("Obj")
                                    ElInd = Doc.CreateElement("Ind")
                                    ElFormat = Doc.CreateElement("Format")
                                    ElUnit = Doc.CreateElement("Unit")
                                    ElSelection = Doc.CreateElement("Selection")
                                    ElSelectInter = Doc.CreateElement("SelectInter")
                                    ElSeuilInter = Doc.CreateElement("SeuilInter")
                                    ElNom.InnerText = Co.Nom
                                    ElObj.InnerText = Co.Obj
                                    ElInd.InnerText = Co.Ind
                                    ElFormat.InnerText = Co.Format
                                    ElUnit.InnerText = Co.Unit
                                    ElSelection.InnerText = Co.Selection
                                    ElSelectInter.InnerText = Co.SelectInter
                                    ElSeuilInter.InnerText = Co.SeuilInter
                                    Elem.AppendChild(ElNom)
                                    Elem.AppendChild(ElNom)
                                    Elem.AppendChild(ElObj)
                                    Elem.AppendChild(ElInd)
                                    Elem.AppendChild(ElFormat)
                                    Elem.AppendChild(ElUnit)
                                    Elem.AppendChild(ElSelection)
                                    Elem.AppendChild(ElSelectInter)
                                    Elem.AppendChild(ElSeuilInter)
                                    Types.InsertAfter(Elem, Types.LastChild)
                                End If
                            Next
                        End If
                    Next
                End If
                Doc.Save(filename)
            Catch ex As Exception
                MsgBox("Erreur d'ecriture")
            End Try
     
        End Sub
    il y a peut être plus simple et même surement grâce a LINQ

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

Discussions similaires

  1. Lecture XML vb.net
    Par tito55 dans le forum VB.NET
    Réponses: 2
    Dernier message: 06/01/2010, 15h56
  2. Ecriture dans un XML en vb.net
    Par jubourbon dans le forum Windows Forms
    Réponses: 3
    Dernier message: 18/10/2008, 18h52
  3. Ecriture sur un fichier XML en VB.net
    Par sarah38 dans le forum VB.NET
    Réponses: 1
    Dernier message: 06/07/2007, 13h35
  4. [VB.net]Lecture xml vers dataset : prob avec sous noeuds
    Par Garrett dans le forum Windows Forms
    Réponses: 1
    Dernier message: 25/04/2007, 20h28
  5. Lecture/Ecriture de fichiers MAT via .NET
    Par mimic50 dans le forum MATLAB
    Réponses: 3
    Dernier message: 29/03/2007, 11h48

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