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 :

Aide sur un programme (plusieurs questions) [Débutant]


Sujet :

VB.NET

  1. #1
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2014
    Messages : 75
    Points : 17
    Points
    17
    Par défaut Aide sur un programme (plusieurs questions)
    Bonjour à tous.
    Il y à peut de temps, j'avais posté sur le forum une demande d'aide pour lire une liste dans un fichier de plusieurs liste et savoir où s’arrêter pour interpréter les différentes listes. Exemple : dans mon fichier j'ai
    "Liste 1
    argument 1
    argument 2
    etc...
    Fin liste 1

    Liste 2 :
    Argument 1
    etc...
    Fin liste 2

    etc...
    "
    Sachant qu'à la fin des arguments d'une liste, je n'avais pas "fin de liste X" mais bien "argument X".

    On m'à alors redirigé vers une solution bien plus simple : un fichier XML.
    Je ne connaissait pas du tout alors j'ai essayé de comprendre les exemples qu'on me donnait et à force de bidouiller et lire relire et l’exécution en pas à pas de visual studio 2013, j'ai compris a peut près ce que je faisait.

    Seulement j'ai d'autres problèmes qui s'offrent à moi à présent.

    Voici mon code, je vous explique après. (ps : si trop compliqué vous pouvez me mp j'essayerais de clarifier les choses.)

    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
    Structure Elève
        Dim nom As String
        Dim prenom As String
        Dim classe As String
        Dim devoirs As String
        Dim exercice As String
        Dim note() As Integer
    End Structure
     
    <XmlRoot("lesclasses")>
    Public Class LesClasses
        <XmlElement("classe")>
        Public Property Classes As New List(Of Classe)
    End Class
     
    Public Class Classe
        <XmlAttribute("nomclasse")>
        Public Property Classe As String = ""
        <XmlElement("eleve")>
        Public Property Eleves As New List(Of Eleve)
    End Class
     
    Public Class Eleve
        <XmlAttribute("nom")>
        Public Property Nom As String = ""
        <XmlAttribute("prenom")>
        Public Property Prenom As String = ""
        <XmlElement("devoir")>
        Public Property Devoirs As New List(Of Devoir)
    End Class
     
    Public Class Devoir
        <XmlAttribute("exercice")>
        Public Property Exercice As String = ""
        <XmlAttribute("note")>
        Public Property Note As Integer = 0
    End Class
    ceci est la partie des classes du fichier XML. (j'ai rajouter une structure pour réaliser un tableau des élèves présent dans mon fichier). Judicieux ?? Pour moi il existe plus simple je pense que c'est de la bidouille. J'attends vos commentaires/critiques/aide.

    Ensuite la partie lecture de mon fichier XML :

    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 Function LitDataXMLClasses(ByVal filename As String) As LesClasses
            Try
                Using objStreamReader As New IO.StreamReader(filename)
                    Try
                        Return DirectCast((New Xml.Serialization.XmlSerializer(GetType(LesClasses))).Deserialize(objStreamReader), LesClasses)
                    Catch ex As Exception
                        MessageBox.Show("Echec de la lecture." & ex.Message)
                    End Try
                End Using
            Catch ex As Exception
                MessageBox.Show("Fichier inaccessible." & ex.Message)
            End Try
            Return Nothing
        End Function
    Rien a rajouter je pense.

    Et là : la seconde partie qui me pose problème :

    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
    Dim Classesel(compteur_el) As Elève
        Dim compteur_el As Integer = 0
        Dim compteur_dev As Integer = 0
        Dim Data As LesClasses = LitDataXMLClasses("classes.xml")
     
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            For Each cl As Classe In Data.Classes
                For Each el As Eleve In cl.Eleves
                    Classesel(compteur_el).nom = el.Nom
                    Classesel(compteur_el).prenom = el.Prenom
                    ComboBox1.Items.Add(Classesel(compteur_el).nom & " " & Classesel(compteur_el).prenom)
                    Classesel(compteur_el).classe = cl.Classe
                    For Each no As Devoir In el.Devoirs
                        Classesel(compteur_el).note(compteur_dev) = no.Note
                    Next
                    compteur_el += 1
                    ReDim Preserve Classesel(compteur_el)
                Next
            Next
        End Sub
    Lors du chargement de ma page donc, je vais lire le fichier XML et j'ajoute les noms des élèves dans une combobox.
    Là ou j'ai un problème c'est à cette ligne : "Classesel(compteur_el).note(compteur_dev) = no.Note"
    un tableau dans un tableau ça ne prends pas.
    J'ai alors pensé à créer un autre tableau portant le même numéro que chaque élèves dans lequel je rajouterais les notes. Encore de la bidouille.
    Je n'ai pas compris pourquoi je ne peux pas creer un tableau de notes dans mon tableau d’élèves. Il me met ce message d'erreur :
    "Une exception non gérée du type 'System.NullReferenceException' s'est produite dans Bidouille XML.exe
    Informations supplémentaires : La référence d'objet n'est pas définie à une instance d'un objet." sur ma ligne. Si j'enlève le tableau j'ai qu'une note et ça fonctionne.

    Voila. En gros j'aimerais optimiser tout ça et comprendre pourquoi je ne peux pas créer mon tableau de notes dans mon tableau d'élèves.
    Merci.

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Bonjour,

    Il faut redimensionner le tableau de note avant de mettre la note dedans.
    Tu devrais utiliser directement les collections.
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2014
    Messages : 75
    Points : 17
    Points
    17
    Par défaut
    C'est à dire des collections ?

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    En gros cà doit donner ça :
    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
            For Each cl As Classe In Data.Classes
                ReDim Preserve Classesel(cl.Eleves.Count - 1)
                For Each el As Eleve In cl.Eleves
                    Classesel(compteur_el).nom = el.Nom
                    Classesel(compteur_el).prenom = el.Prenom
                    ComboBox1.Items.Add(Classesel(compteur_el).nom & " " & Classesel(compteur_el).prenom)
                    Classesel(compteur_el).classe = cl.Classe
                    compteur_dev = 0
                    ReDim Classesel(compteur_el).note(el.Devoirs.Count - 1)
                    For Each no As Devoir In el.Devoirs
                        compteur_dev += 1
                        Classesel(compteur_el).note(compteur_dev) = no.Note
                    Next
                    compteur_el += 1
                Next
            Next
    Après tu vas utiliser ton tableau pour travailler.
    Alors pourquoi ne pas directement travailler avec les collections de tes classes ?
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2014
    Messages : 75
    Points : 17
    Points
    17
    Par défaut
    Ah ok oui je le voyais plus lisible mais au final c'est plus fouillis effectivement. Merci .

  6. #6
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2014
    Messages : 75
    Points : 17
    Points
    17
    Par défaut
    Et pour écrire dans le XML ?
    Vous m'aviez donné comme 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
    Private Sub EcritDataXMLClasses(ByVal filename As String, lesClasses As LesClasses)
            Try
                Using objStreamWriter As StreamWriter = New StreamWriter(filename)
                    Try
                        Dim xsClasses As New Xml.Serialization.XmlSerializer(GetType(LesClasses), New Xml.Serialization.XmlRootAttribute("lesclasses"))
                        xsClasses.Serialize(objStreamWriter, lesClasses)
                    Catch ex As Exception
                        MessageBox.Show("Echec de l'écriture." & ex.Message)
                    End Try
                End Using
            Catch ex As Exception
                MessageBox.Show("Fichier inaccessible." & ex.Message)
            End Try
        End Sub
    J'arrive effectivement à copier le fichier en mettant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EcritDataXMLClasses("essaisXML.XML", Data)
    grâce à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim Data As LesClasses = LitDataXMLClasses("classes.xml")
    Mais même en créant un nouvel objet "lesclasses" je n'arrive pas à ajouter des données style "Data1.classe = "6ème" où même ajouter un élève grace à ce data.
    j'avoue que je patauges un peut dans la semoule là :/

  7. #7
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Moi, j'utilise une méthode de paresseux.

    Un DataSet et toutes les DataTable qu'il contient peuvent être enregistrés au format XML, et relues avec seulement deux lignes de code.

    Pour gérer des notes, rien de mieux que d'utiliser les outils disponibles pour traiter les données plutôt que de tout reconstruire à partir de zéro.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  8. #8
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2014
    Messages : 75
    Points : 17
    Points
    17
    Par défaut
    Comment il s'utilise ?
    à partir de mon data je peux l'utiliser? ou il me faut d'autres fonctions ?

  9. #9
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Citation Envoyé par Vidou12 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim Data As LesClasses = LitDataXMLClasses("classes.xml")
    Mais même en créant un nouvel objet "lesclasses" je n'arrive pas à ajouter des données style "Data1.classe = "6ème" où même ajouter un élève grace à ce data.
    j'avoue que je patauges un peut dans la semoule là :/
    Pour répondre à ta question
    Ajouter une classe 6ème
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
            Dim Cl As Classe = New Classe 'cré une nouvelle classe
            Cl.Classe = "6ème"
            ' si la classe n'existe pas, la cré
            If Data.Classes.FindIndex(Function(x) x.Classe.Contains(Cl.Classe)) < 0 Then
                Data.Classes.Add(Cl) ' ajoute à la liste des classes si elle n'existe pas
                EcritDataXMLClasses("d:\data\fichier XML\classes.xml", Data) 'sauve le fichier avec la nouvelle classe
            End If
        End Sub
    Ajouter des élèves à cette classe 6ème
    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 Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
            Dim index6eme As Integer = Data.Classes.FindIndex(Function(x) x.Classe.Contains("6ème"))        ' détermine la position de la classe 6ème
            If Data.Classes(index6eme).Eleves Is Nothing Then Data.Classes(index6eme).Eleves = New List(Of Eleve)        ' si la liste des élèves pour cette classe n'existe pas, la cré
            Dim El As Eleve = New Eleve        ' cré un nouvel élève
            El.Nom = "Nom1"
            El.Prenom = "Fred"
            Data.Classes(index6eme).Eleves.Add(El) ' ajoute l'élève
            El = New Eleve                           ' cré un 2 ème élève
            El.Nom = "Nom2"
            El.Prenom = "Pierre"
            Data.Classes(index6eme).Eleves.Add(El) ' ajoute l'élève
            EcritDataXMLClasses("d:\data\fichier XML\classes.xml", Data) ' sauve le fichier
        End Sub
    Résultat dans le fichier (je mets juste la fin du fichier)
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ...
      <classe nomclasse="6ème">
        <eleve nom="Nom1" prenom="Fred" />
        <eleve nom="Nom2" prenom="Pierre" />
      </classe>
    </lesclasses>
    Images attachées Images attachées  
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  10. #10
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2014
    Messages : 75
    Points : 17
    Points
    17
    Par défaut
    ah oui ok on reprends tout du début en effet ^^ je cherchais plus simple mais j'étais loin de tout ça ^^
    Merci je regarderais ça de plus près !

  11. #11
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Citation Envoyé par Vidou12 Voir le message
    ah oui ok on reprends tout du début en effet ^^
    On manipule la collection Data (données).

    Citation Envoyé par Vidou12 Voir le message
    je cherchais plus simple
    Sinon les dataset ont une méthode ReadXml. Ensuite gestion classique dataset, datatable. (ds.Tables(0) > classes, ds.Tables(1) >> eleves ...)
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  12. #12
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2014
    Messages : 75
    Points : 17
    Points
    17
    Par défaut
    Je vais déjà essayer de manipuler comme vous m'avez dit avant de passer à autre chose et comprendre le code correctement !
    En revanche, pourquoi vous travaillez avec les attributs et non avec les contenus ? question de "fainéantise" ? ^^

  13. #13
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2014
    Messages : 75
    Points : 17
    Points
    17
    Par défaut
    J'ai bidouiller un peut le code pour tester certaines choses mais même sans le bidouiller le code ne marche pas et me met que le fichier est inaccessible périphérique non prêt.
    j'ai modifier certaines parties pour faire tout en 1 (genre lors de l'appuis sur bouton, je créé une classe portant le nom de textbox 4 un nouvel eleve du nom textbox 5 prenom textbox 6 je calle le tout dans la classe et enregistre. ça prends pas...

  14. #14
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2014
    Messages : 75
    Points : 17
    Points
    17
    Par défaut
    haha c'est bon j'ai résolu le problème.... Merci.
    j'avais pas mis le bon nom de fichier à enregistrer...

  15. #15
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Citation Envoyé par Vidou12 Voir le message
    En revanche, pourquoi vous travaillez avec les attributs et non avec les contenus ?
    Qu'entends-tu par contenu ?

    Dans le code, je travaille avec les propriétés des classes.
    Ex : nom de l'élève Public Property Nom As String = "". => la manip de la propriété dans le code : Data.Classes.Eleves.Nom qui correspond à Classesel(compteur_el).nom = el.Nom dans le for each (voir post 4) (data étant une instance (un objet) créé à partir de la classe Dim Data As LesClasses avec un New)
    Ou directement dans le cas un objet élève Dim El As Eleve = New Eleve => El.Nom = "Nom1" (voir Post 9)

    Les attributs servent à nommer les données dans le fichier XML et à d'autres fonctionnalités liées à la sérialisation.
    <XmlAttribute("nom")> place les données sur une ligne. (sous forme d'un attribut de son élément parent)
    <XmlElement("eleve")> place les données les unes sous les autres. (sous forme d'un élément XML)
    C'est juste un façon de ranger les données, on fait comme on veut.
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  16. #16
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2014
    Messages : 75
    Points : 17
    Points
    17
    Par défaut
    dans le fichier xml on à les balises ex : "<balise/>"
    à ces balises on peut y ajouter des attributs ex : "<balise attribut = "bonjour"/>"
    mais aussi et surtout des valeurs ex : "<balise attribut = "bonjour">valeur balise</balise>"
    le traitement est plus complexe peut être? c'est juste de la curiosité !

  17. #17
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    J'ai remis les liens précis sur les paragraphes concernés dans le post au dessus (pour element et attribut)

    Ceci
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    <devoir exercice="math Numéro 1" note="12" />
    est la même chose que
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <devoir exercice="math Numéro 1" >
    	<note>12</note>
    <devoir/>
    et que
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <devoir>
    	<exercice>math Numéro 1</exercice>
    	<note>12</note>
    <devoir/>
    simplement présenté différemment

    L'élément xml exercice à la valeur "math Numéro 1"
    L'élément xml note à la valeur 12

    Dans le premier cas, Note et exercice sont des attributs de l'élément xml parent devoir
    Dans le dernier cas, Note et exercice sont des éléments xml de l'élément xml parent devoir.
    Ils ont dans tout les cas la même valeur
    C'est la définition dans la classe qui positionne d'une manière ou d'une autre.
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  18. #18
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2014
    Messages : 75
    Points : 17
    Points
    17
    Par défaut
    Oui je sais je me demandais juste pourquoi avoir choisis cette manière d'écriture plus tôt que l'autre.
    Mais niveau lisibilité c'est plus lisible celle là effectivement.
    Merci pour votre aide .

  19. #19
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2014
    Messages : 75
    Points : 17
    Points
    17
    Par défaut
    Bon ben les ennuis continuent xD
    Je cherchais justement à me servir de tout ça pour faire un fichier de paramètres que je contrôle au démarrage de mon logiciel.
    j'ai donc entré ça dans mon compilateur :
    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
    <XmlRoot("Propriétés")>
    Public Class Propriétées
        <XmlElement("Activer_Couleurs_General")>
        Public Property Act_Coul_Gen As New Autor_Coul_Gen
     
        <XmlElement("Activer_couleurs_Accueuil")>
        Public Property Act_Coul_Acc As New Autor_Coul_Acc
     
        <XmlElement("Activer_Modification_MDP")>
        Public Property Act_MDP As Boolean
     
    End Class
     
    Public Class Autor_Coul_Gen
        <XmlAttribute("Valeur")>
        Public Property Autor_Couleur_Gen As Boolean = False
    End Class
     
    Public Class Autor_Coul_Acc
        <XmlAttribute("Valeur")>
        Public Property Autor_Couleur_Acc As Boolean = False
        <XmlElement("Couleur")>
        Public Property Colors As New Couleurs
    End Class
     
    Public Class Couleurs
        <XmlAttribute("Rouge")>
        Public Property Rouge As Integer = 0
        <XmlAttribute("Vert")>
        Public Property Vert As Integer = 0
        <XmlAttribute("Bleu")>
        Public Property Bleu As Integer = 0
    End Class
    en gardant le même code pour la lecture j'ai donc ceci :
    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
    Private Function LitDataXMLPropriétés(ByVal filename As String) As Propriétées
            Try
                Using objStreamReader As New IO.StreamReader(filename)
                    Try
                        Return DirectCast((New Xml.Serialization.XmlSerializer(GetType(Propriétées))).Deserialize(objStreamReader), Propriétées)
                    Catch ex As Exception
                        MessageBox.Show("Echec de la lecture." & ex.Message)
                    End Try
                End Using
            Catch ex As Exception
                MessageBox.Show("Fichier inaccessible." & ex.Message)
            End Try
            Return Nothing
        End Function
     
    End Class
    et dans 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" ?>
    <Propriétés>
        <Activer_Couleurs_General valeur ="1"/>
            <Activer_couleurs_Accueuil valeur ="1">
          <Couleur Rouge ="0" Vert ="0" Bleu ="0"/>
        </Activer_couleurs_Accueuil>
      <Activer_Modification_MDP valeur ="0"/>
    </Propriétés>
    avec un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Public Class Demarrage
        Dim Paramètres As Propriétées = LitDataXMLPropriétés("Propriétées.xml")
    .

    Il m'indique que mon fichier XML à un problème à la ligne 8 et au caractère 3 (donc le P de "</Propriétés>").

    J'ai beau tourner mon fichier XML dans tous les sens, je ne comprends pas pourquoi il me donne ce message d'erreur .
    Encore désolé je me doute que je doit paraître "pénible"

  20. #20
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    c'est cette ligne qui n'est pas correcte <Activer_Modification_MDP valeur ="0"/>. [Edit]C'est un xmlElement pas un xmlAttribut[/Edit]
    Ton fichier XML doit ressembler à ceci.
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?xml version="1.0" encoding="utf-8"?>
    <Propriétés xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <Activer_Couleurs_General Valeur="false" />
      <Activer_couleurs_Accueuil Valeur="false">
        <Couleur Rouge="0" Vert="0" Bleu="0" />
      </Activer_couleurs_Accueuil>
      <Activer_Modification_MDP>false</Activer_Modification_MDP>
    </Propriétés>
    ou bien le mettre en xmlAttribut

    Initialise par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        <XmlElement("Activer_Modification_MDP")>
        Public Property Act_MDP As Boolean = False
    Citation Envoyé par Vidou12 Voir le message
    Encore désolé je me doute que je doit paraître "pénible"
    Bah, c'est toujours un peu délicat à mettre en place.

    Le plus simple est de créer la classe et de la sauver
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            Proprietes = New Propriétées
            EcritDataXMLPropriétés("d:\data\fichier XML\Propriétées.xml", Proprietes)
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

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

Discussions similaires

  1. Aide sur un programme Client Serveur
    Par clubmed01 dans le forum Linux
    Réponses: 33
    Dernier message: 29/05/2012, 10h22
  2. Besoin d'aide sur un programme
    Par chuko dans le forum C
    Réponses: 22
    Dernier message: 14/06/2008, 17h33
  3. [VB6] Demande d'aide sur un programme !
    Par Lucas42 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 16/06/2006, 11h49

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