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 :
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
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
Voilà, je ne sais pas si plusieurs structures XML peuvent être ainsi déclarées à partir de la transformation d'un seul fichier CSV.
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>
Merci de m'éclairer s'il existe une solution simple (je suis débutant ...)
Partager