Je souhaiterai ressortir le code CSV on XML, la première ligne étant le nom des colonnes. Ce code m'indique ceci: Code_postal
Exception non gérée*: System.InvalidOperationException: Le jeton StartAttribute
dans l'état Element Content générera un document XML non valide.
à System.Xml.XmlWellFormedWriter.ThrowInvalidStateTransition(Token token, Sta
te currentState)
à System.Xml.XmlWellFormedWriter.AdvanceState(Token token)
à System.Xml.XmlWellFormedWriter.WriteStartAttribute(String prefix, String lo
calName, String namespaceName)
à System.Xml.XmlWriter.WriteAttributeString(String localName, String value)
à ConsoleApplication2.Program.Main(String[] args) dans c:\Users\perso\Documen
ts\Visual Studio 2013\Projects\ConsoleApplication2\ConsoleApplication2\Program.c
s:ligne 63
Mon code :
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Xml; namespace ConsoleApplication2 { class Program { static void Main(string[] args) { List<string> lignes = new List<string>(); List<string> valeur = new List<string>(); List<string> entete = new List<string>(); string[] lines = System.IO.File.ReadAllLines(@"C:\cp.csv"); char delimiter = ';'; int count; int nb = 0; int nbligne = 0; foreach (string line in lines) { lignes.Add(line); String[] valeurs = line.Split(delimiter); count = 0; foreach (string value in valeurs) { //Console.WriteLine(value); char[] charsToTrim = { '\"' }; string nvalue = value.Trim(charsToTrim); if (nbligne == 0) { entete.Add(nvalue); Console.WriteLine(nvalue); } else { valeur.Add(nvalue); } count ++; } nb = count; nbligne++; } count = 0; XmlWriter xmlWriter = XmlWriter.Create("test.xml"); xmlWriter.WriteStartDocument(); xmlWriter.WriteStartElement("lignes"); int monEntete = 0; foreach (string unevaleur in valeur) { if (monEntete == 0) { xmlWriter.WriteStartElement("uneLigne"); } xmlWriter.WriteAttributeString(entete[monEntete],unevaleur); monEntete++; if (monEntete == nb) { monEntete = 0; } xmlWriter.WriteEndElement(); } xmlWriter.WriteEndDocument(); xmlWriter.Close(); } } }
Partager