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 :

Bug à la création d'un fichier XML


Sujet :

VB.NET

  1. #1
    Membre régulier
    Inscrit en
    Février 2003
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 233
    Points : 72
    Points
    72
    Par défaut Bug à la création d'un fichier XML
    Bonjour à tous,
    Je cherche à créer un fichier XML pour sauvegarder le contenu des champs de mon appli.
    Pour ce faire, j'utilise le code suivant ;
    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
    Sub Enregistre()
    With SaveFileDialog1
                .Title = "Enregistrement fichier essai"
                .Filter = "Fichiers texte (*.txt) | *.txt"
                .ShowDialog()
            End With
            If SaveFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
                Nomfichier = SaveFileDialog1.FileName
                Dim sw As New StreamWriter(Nomfichier)
                sw.WriteLine("<Evaluation>")
                sw.WriteLine("<Version>3.1</Version>")
                sw.WriteLine("</Evaluation>")
                sw.Close()
            End If
    Dim doc As New XmlDocument()
                doc.Load(Nomfichier)
                Dim noeud As XmlNode = doc.DocumentElement
                For Each noeud In noeud.ChildNodes
                    If noeud.Name = "EtudeRendement" Then
                        doc.DocumentElement.RemoveChild(noeud)
                        doc.Save(Nomfichier)
                    End If
                Next
     
                Dim Elem_EtudeRendement As XmlElement
                Elem_EtudeRendement = doc.CreateElement("EtudeRendement")
     
                Dim Elem_DateDeb As XmlElement
                Elem_DateDeb = doc.CreateElement("DateDeb")
                Elem_DateDeb.InnerText = TextBox_DateDeb.Text
                Elem_EtudeRendement.AppendChild(Elem_DateDeb)
     
    Dim Elem_NbTx As XmlElement
                Elem_NbTx = doc.CreateElement("NbTx")
                Elem_PrixHA.InnerText = Form_Trvx.ContTrvx
                Elem_EtudeRendement.AppendChild(Elem_NbTx)
     
     Dim Elem_Apr As XmlElement
                Elem_Apr = doc.CreateElement("Apr")
                Elem_Apr.InnerText = TextBox_Apport.Text
                Elem_EtudeRendement.AppendChild(Elem_Apr)
     
    doc.DocumentElement.AppendChild(Elem_EtudeRendement)
                doc.Save(Nomfichier)
     
    end sub
    Tout se passe comme je le veux, sauf pour la création du noeud "NbTx".
    En effet, voici le fichier XML qui est généré :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <Evaluation>
      <Version>3.1</Version>
      <EtudeRendement>
        <DateDeb>01/12/2016</DateDeb>
         <NbTx />
        <Apr>0</Apr>
    </EtudeRendement>
    </Evaluation>
    J'ai beau chercher, je ne comprend pas ce qui peut causer une telle erreur.

    Quelqu'un aurait une idée ?
    Merci d'avance

  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,
    Citation Envoyé par djedje-08 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
                Dim Elem_NbTx As XmlElement
                Elem_NbTx = doc.CreateElement("NbTx")
                Elem_PrixHA.InnerText = Form_Trvx.ContTrvx
                Elem_EtudeRendement.AppendChild(Elem_NbTx)
    Qu'est-ce que "Elem_PrixHA" vient faire au milieu ? du coup "Elem_NbTx " est vide.
    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
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    La serialization xml :

    1 classe Evaluation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <Serializable>
    Public Class Evaluation
     
        Public Version As String
        Public EtudeRendement As EtudeRendement
     
    End Class
    1 classe EtudeRendement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <Serializable>
    Public Class EtudeRendement
     
        Public DateDeb As String
        Public NbTx As String
        Public Apr As String
     
    End Class
    1 classe de gestion AppSettings :

    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
     
    Imports System.Xml.Serialization
    Imports System.IO
     
        <Serializable>
        Public Class AppSettings
     
    #Region " Fields "
            Public Evaluation As Evaluation
            <XmlIgnore()>
            Public XmlPath As String = My.Application.Info.DirectoryPath & "\Conf.xml"
    #End Region
     
    #Region " Methods "
            ''' <summary>
            ''' Enregistre l'état courant de la classe dans un fichier au format XML.
            ''' </summary>
            Public Sub SaveFile()
                Dim serializer As New XmlSerializer(GetType(AppSettings))
                Dim ecrivain As New StreamWriter(XmlPath)
                serializer.Serialize(ecrivain, Me)
                ecrivain.Close()
            End Sub
     
            ''' <summary>
            ''' Charge l'état courant du fichier XML.
            ''' </summary>
            ''' <returns>Valeur de type AppSettings</returns>
            Public Shared Function LoadFile() As AppSettings
                Dim deserializer As New XmlSerializer(GetType(AppSettings))
                Dim lecteur As New StreamReader(My.Application.Info.DirectoryPath & "\Conf.xml")
                Dim p As AppSettings = DirectCast(deserializer.Deserialize(lecteur), AppSettings)
                lecteur.Close()
                Return p
            End Function
     
    #End Region
     
        End Class
    1 projet test d'enregistrement avec 3 textbox et 1 bouton :

    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
     
    Public Class Form1
     
        Private m_Settings As AppSettings
     
        Sub New()
            InitializeComponent()
            m_Settings = New AppSettings
        End Sub
     
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim etud As New EtudeRendement With {.DateDeb = TextBox1.Text,
                                                 .NbTx = TextBox2.Text,
                                                 .Apr = TextBox3.Text}
            Dim eval As New Evaluation With {.EtudeRendement = etud,
                                             .Version = "3.1"}
     
            m_Settings.Evaluation = eval
            m_Settings.SaveFile()
        End Sub
    End Class
    Le contenu du fichier .xml après l'enregistrement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <?xml version="1.0" encoding="utf-8"?>
    <AppSettings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <Evaluation>
        <Version>3.1</Version>
        <EtudeRendement>
          <DateDeb>01/12/2016</DateDeb>
          <NbTx>Trvx</NbTx>
          <Apr>0</Apr>
        </EtudeRendement>
      </Evaluation>
    </AppSettings>
    Un langage objet pour de la programmation orienté objet

  4. #4
    Membre régulier
    Inscrit en
    Février 2003
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 233
    Points : 72
    Points
    72
    Par défaut
    @ rv26t => Effectivement avec le code ci-dessous ça marche mieux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Elem_NbTx.InnerText = Form_Trvx.ContTrvx
    Quand on a la tête dans le guidon, on ne se rend pas compte de ce genre de petites bêtises.

    @ wallace1 => Merci pour tes bons conseils. Je vais pouvoir refaire mon code en conséquence et faire quelque chose de plus propre.

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

Discussions similaires

  1. [JDOM] Création d'un fichier xml avec jdom
    Par fabricew59 dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 09/08/2006, 11h17
  2. [XSD] Création d'un fichier XML
    Par Taylor² dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 06/06/2006, 22h16
  3. Création d'un fichier XML
    Par fantasio31 dans le forum Général Python
    Réponses: 2
    Dernier message: 09/09/2004, 17h06
  4. [XML] Création d'un fichier XML
    Par TheDarkLewis dans le forum Langage
    Réponses: 6
    Dernier message: 24/07/2004, 18h27
  5. ligne d'entête création d'un fichier XML
    Par cduterme dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 23/02/2004, 15h30

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