Bonjour,
J'ai récemment fait appel au Forum pour résoudre un problème et je ne l'ai pas regretté puisque "Sankasssss" m'a apporté la solution (encore merci ! ).
Je suis toujours en cours de rédaction d’un code en VB.NET qui me permettrait d’exporter les données d’un fichier CSV en fichier XML.
Pour l’instant le code ci-dessous me permet de le faire mais seulement avec une structure XML unique (non adaptative).
Le fichier CSV possède les champs suivants : « Nom »;« Type »;« Abscisse1 »;« Ordonnée1 »;« Abscisse2 »;« Ordonnée2 »

Lorsque le Type est « POINT», il ne nécessite qu’un seul champ Abscisse et Ordonnée, ce qui donne :

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
Private Sub CsvToXml()
 
        Dim CheminFichierSource As String = "C:/Test.csv" 'Chemin du fichier CSV
        Dim CheminFichierXML As String = "C:/Test.xml" 'Chemin du fichier XML
        Dim TexteCSV As String() 'Texte du Fichier source
        Dim StructureXML As XElement 'Structure XML à générer
 
        'Déclarer le flux de fichier en mode "Création" (Fichier XML) pour écraser éventuellement
        'le fichier qui porterait le même nom (partir d'un fichier vide avant son remplissage)
        'puis le fermer
        Dim CreerFichierXML As New FileStream(CheminFichierXML, FileMode.Create)
        CreerFichierXML.Close()
 
        'Affecter à la variable "TexteCSV" le contenu du Fichier source
        TexteCSV = File.ReadAllLines(CheminFichierSource)
 
        'Déclarer le flux de fichier en mode "Ecriture" (Fichier XML)
        Dim EcrireFichierXML As New StreamWriter(CheminFichierXML)
 
        'Affecter à la variable "StructureXML" la structure XML pour un Type POINT
        StructureXML = _
            <Root>
                <%= From strs In TexteCSV _
                    Let fields = Split(strs, ";") _
                    Select _
                    <Geometrie>
                        <Nom><%= fields(0) %></Nom>
                        <Type><%= fields(1) %></Type>
                        <Caracteristiques>
                             <Coordonnees>
                                 <Abscisse><%= fields(2) %></Abscisse>
                                 <Ordonnee><%= fields(3) %></Ordonnee>
                             </Coordonnees>
                        </Caracteristiques>
                    </ Geometrie >
                %>
            </Root>
 
        'Ecrire le fichier XML puis fermer le fichier
        EcrireFichierXML.WriteLine(StructureXML)
        EcrireFichierXML.Close()
 
    End Sub
Maintenant, ce que je voudrais faire : c'est que lorsque le Type (dans une ligne du fichier CSV) est « SEGMENT », la structure XML s'adapte et devienne celle-ci :

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
 
        'Affecter à la variable "StructureXML" la structure XML pour un Type SEGMENT
        StructureXML = _
            <Root>
                <%= From strs In TexteCSV _
                    Let fields = Split(strs, ";") _
                    Select _
                    <Geometrie>
                        <Nom><%= fields(0) %></Nom>
                        <Type><%= fields(1) %></Type>
                        <Caracteristiques>
                             <Coordonnees>
                                 <Abscisse><%= fields(2) %></Abscisse>
                                 <Ordonnee><%= fields(3) %></Ordonnee>
                             </Coordonnees>
                        </Caracteristiques>
                        <Caracteristiques>
                             <Coordonnees>
                                 <Abscisse><%= fields(4) %></Abscisse>
                                 <Ordonnee><%= fields(5) %></Ordonnee>
                             </Coordonnees>
                        </Caracteristiques>
                    </ Geometrie >
                %>
            </Root>
Voilà, je ne sais pas si plusieurs structures XML peuvent être ainsi déclarées à partir de la transformation d'un seul fichier CSV.
Merci de m'éclairer s'il existe une solution simple (je suis débutant ...)