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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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

+ 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