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 :

Ecrire un fichier xml avec Xdocument.


Sujet :

VB.NET

  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2012
    Messages
    640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2012
    Messages : 640
    Par défaut Ecrire un fichier xml avec Xdocument.
    Bonjour à tous,
    J'ai décidé de laisser tomber la serialization pour écrire moi-même les fichiers XML comme je veux.
    Par contre j'ai une liste d'objets 'Layout' que j'aimerais écrire à l’intérieur de chaque objet 'Track' mais je ne parviens pas à rappeler le nœud xml qui va bien pour écrire dans ce dernier. (Voir mon code avec les 3 petits points...)
    Je suis un peu dérouté par Linq que j'utilise pour la première fois mais ça va venir à force....

    En vous remerciant par avance.
    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
     Public Sub Save(ByVal fileName As String)
     
            '//create the document
            Dim doc As XDocument = <?xml version="1.0" encoding="utf-8"?>
                                   <root TracksCount=<%= _Tracks.Count %> Toto=<%= 8 %>></root>
     
            '//loop all Track
            For Each kvp As KeyValuePair(Of String, Track) In _Tracks
                doc.Root.Add(<TrackName><%= kvp.Key %>
                                 <Nom><%= kvp.Value.Nom %></Nom>
                                 <Description ><%= kvp.Value.Description %></Description >
                                 <Longueur ><%= kvp.Value.Longueur %></Longueur >
                             </TrackName>)
                '//loop all Layout
                For Each kvp2 As KeyValuePair(Of String, Layout) In kvp.Value.Layouts
                      ......
                Next
            Next
    End Sub

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2012
    Messages
    640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2012
    Messages : 640
    Par défaut
    Oufff, j'ai fini par trouvé. Maintenant j'ai un nouveau petit problème :
    Lorsque une propriété est null ça m’écrit une balise vide du type : <Description />, il y a moyen d’empêcher l'écriture de cette balise ? Etant donnée la syntaxe un peut particulière de Linq To Xml j'ai un peu de mal...

    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
      Public Sub Save(ByVal fileName As String)
            '//create the document
            Dim doc As XDocument = <?xml version="1.0" encoding="utf-8"?>
                                   <!--XMLwriter pour ACTools-->
                                   <root TracksCount=<%= _Tracks.Count %> edgeCount=<%= 8 %>></root>
     
            '//loop all Track
            For Each kvp As KeyValuePair(Of String, Track) In _Tracks
                Dim elTrack As XElement = <TrackName name=<%= kvp.Key %>>
                                              <Nom><%= kvp.Value.Nom %></Nom>
                                              <Description><%= kvp.Value.Description %></Description>
                                              <Longueur><%= kvp.Value.Longueur %></Longueur>
                                          </TrackName>
                doc.Root.Add(elTrack)
                For Each kvp2 As KeyValuePair(Of String, Layout) In kvp.Value.Layouts
                    Dim elLayout As XElement = <TrackLayout name=<%= kvp2.Key %>>
                                                   <Nom><%= kvp2.Value.Nom %></Nom>
                                                   <Description><%= kvp2.Value.Description %></Description>
                                                   <Longueur><%= kvp2.Value.Longueur %></Longueur>
                                               </TrackLayout>
                    elTrack.Add(elLayout)
                Next
            Next
     
            '//saves the file
            doc.Save(fileName)
        End Sub
    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
      Public Function Load(ByVal fileName As String) As Tracks
            '//try to read the Xml file
            Try
                '//load the Xml and create the new Tracks
                Dim doc = XDocument.Load(fileName)
                Dim Tracks = New Tracks()
     
                '//get all Track
                For Each elTrack In doc.<root>.<TrackName>
                    Dim Track As New Track(elTrack.@name)
                    Track.Nom = elTrack.<Nom>.Value
                    Track.Description = elTrack.<Description>.Value
     
                    For Each elLayout In doc.<root>.<TrackName>.<TrackLayout>
                        Dim Layout As New Layout(elLayout.@name)
                        Layout.Nom = elLayout.<Nom>.Value
                        Layout.Description = elLayout.<Description>.Value
     
                        Track.Layouts.Add(Layout.LayoutName, Layout)
                    Next
                    Tracks.Add(Track.Name, Track)
                Next
     
                Return Tracks
            Catch ex As Exception
                Return Nothing
            End Try
        End Function

Discussions similaires

  1. Réponses: 4
    Dernier message: 02/02/2012, 11h45
  2. Ecrire un fichier xml avec un accés par Url
    Par jlmdev dans le forum C#
    Réponses: 1
    Dernier message: 04/04/2009, 21h56
  3. ecrire dans un fichier xml avec php
    Par gilbertbicot dans le forum Langage
    Réponses: 1
    Dernier message: 21/01/2009, 13h10
  4. [PHP-JS] Ecrire un fichier xml avec un string XML
    Par bobic dans le forum Langage
    Réponses: 1
    Dernier message: 22/12/2006, 14h18
  5. Ecrire un fichier XML avec la méthode Dom
    Par aswat dans le forum Général Python
    Réponses: 2
    Dernier message: 20/05/2006, 19h41

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