Ajouter des données à un fichier xml [Résolu]

Messages postés
3241
Date d'inscription
jeudi 26 novembre 2009
Dernière intervention
26 novembre 2018
- - Dernière réponse :  Utilisateur anonyme - 7 nov. 2011 à 23:28
Bonjour à tous

J'utilise le xmltextwriter pour écrire dans un
fichier xml
que faut il écrire pour ajouter les données
au fichier s'il n'est pas vide
la premiere fois il est vide
la deuxième fois que je lance le prog
ajouter les données au fichier

merci d'avance
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
3
Merci
Tu devrais te pencher sur la sérialisation / dé-sérialisation.
Mais ce n'est qu'une suggestion bien entendu.
Un petit exemple pas commenté (mais tu comprendras vite je le sais)

Option Strict On
Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim MaClasse As New Files

        MaClasse.Add(New File("tata", "1", 10))
        MaClasse.Add(New File("titi", "2", 200))
        MaClasse.Add(New File("toto", "1", 6))
        MaClasse.Add(New File("tutu", "7", 40))

        Dim ser As New Xml.Serialization.XmlSerializer(GetType(Files))
        Using writer As New IO.StreamWriter("test.xml")
            ser.Serialize(writer, MaClasse)
        End Using

    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim MaClasse As New Files

        Dim ser As New Xml.Serialization.XmlSerializer(GetType(Files))
        Using reader As New IO.StreamReader("test.xml")
            MaClasse = CType(ser.Deserialize(reader), Files)
        End Using
    End Sub


    Public Class Files
        Dim _Liste As New List(Of File)

        Sub New()

        End Sub

        Sub Add(ByVal File As File)
            _Liste.Add(File)
        End Sub

        Property Liste As List(Of File)
            Set(ByVal value As List(Of File))
                _Liste = value
            End Set
            Get
                Return _Liste
            End Get
        End Property
    End Class

    Public Class File
        Dim _Nom, _Version As String
        Dim _Taille As Long

        Sub New()

        End Sub

        Sub New(ByVal nom As String, ByVal version As String, ByVal Taille As Long)
            _Nom = nom
            _Version = version
            _Taille = Taille
        End Sub

        Property Nom As String
            Set(ByVal value As String)
                _Nom = value
            End Set
            Get
                Return _Nom
            End Get
        End Property

        Property Version As String
            Set(ByVal value As String)
                _Version = value
            End Set
            Get
                Return _Version
            End Get
        End Property

        Property Taille As Long
            Set(ByVal value As Long)
                _Taille = value
            End Set
            Get
                Return _Taille
            End Get
        End Property
    End Class
End Class

Merci Utilisateur anonyme 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de Utilisateur anonyme
3
Merci
Une fois que tu as lu ton xml tu peux ajouter ou modifier facilement des données :

Dim MaClasse As New Files
Dim ser As New Xml.Serialization.XmlSerializer(GetType(Files))
Using reader As New IO.StreamReader("test.xml")
    MaClasse = CType(ser.Deserialize(reader), Files)
End Using

'ajout d'un élément
MaClasse.Add(New File("bibi", "3", 240))

'modif d'une donnée existante
MaClasse.Liste.Item(0).Nom = "bubu"

'sauvegarde du xml
Using writer As New IO.StreamWriter("test.xml")
    ser.Serialize(writer, MaClasse)
End Using

Merci Utilisateur anonyme 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de Utilisateur anonyme
0
Merci
Bonsoir ShayW,

Ce xml est-il généré ou lu par ton application ou les deux à la fois ?
Commenter la réponse de Utilisateur anonyme
Messages postés
3241
Date d'inscription
jeudi 26 novembre 2009
Dernière intervention
26 novembre 2018
0
Merci
Bonsoir Banana32
Mes premiers pas avec xml

Private textWriter As New XmlTextWriter(Application.StartupPath & "\testxml.xml", Nothing)

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Writexml()
    End Sub
Private Sub Writexml()
   textWriter.WriteStartDocument()
           ' Write first element
   textWriter.WriteStartElement("Model")
   textWriter.WriteStartElement("ShapeRotation")
        ' Write next element
        textWriter.WriteStartElement("cxcxcdxfs")
        textWriter.WriteEndElement()
        textWriter.WriteStartElement("c22cxcdxfs")
        textWriter.WriteEndElement()
        textWriter.WriteEndElement()
        textWriter.WriteEndElement()
        ' Ends the document.
  textWriter.WriteEndDocument()
        ' close writer
   textWriter.Close()
    End Sub


je serai obligé aussi de lire le fichier
tout d'abord avec ce code le fichier est reécrit par dessus
Commenter la réponse de cs_ShayW
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
Bonjour,

Ajouter (append) à un xml existant n'est pas prévu, à ma connaissance.
Mais tu peux "contourner"
Je te suggère La lecture de cfette discussion . Elle est en anglais, mais très facile à comprendre.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
0
Merci
Ah et j'oubliais :
Tu peux vouloir mettre un élément en attribut de cette façon :

<Xml.Serialization.XmlAttribute()> _
Property Taille As Long
    Set(ByVal value As Long)
        _Taille = value
    End Set
    Get
        Return _Taille
    End Get
End Property
Commenter la réponse de Utilisateur anonyme
Messages postés
3241
Date d'inscription
jeudi 26 novembre 2009
Dernière intervention
26 novembre 2018
0
Merci
Ok
j'ai vu pas mal de tuto sur le web à propos
de la serialization
Bonsoir/Bonjour ucfoutu
j'ai lu l'article avec le

so you'd have to make use of psychic powers to figure out when to start appending
Commenter la réponse de cs_ShayW

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.