Bonjour,
J'utilise le code suivant pour importer un fichier xml dans un dataset.
voici mon fichier xml
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 string filePath = @"d:\FichierInputXml.xml"; XmlDocument doc = new XmlDocument(); XmlDeclaration declar; declar = doc.CreateXmlDeclaration("1.0", "utf-8", null); XmlReader reader = XmlReader.Create(@"d:\FichierInputXml.xml"); // Essaye de charger le document XML try { doc.Load(filePath); ds.ReadXml(reader); dataGrid1.DataSource = ds; string member = ""; dataGrid1.DataMember = member; dataGrid1.CaptionText = dataGrid1.DataMember; } catch (Exception err) { MessageBox.Show("Chargement du document XML impossible ! Exception : " + err.Message ); }
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 <?xml version="1.0" encoding="UTF-8" ?> <Envelope> <Body> <validationDemandeCredit> <demande> <autreRevenu>0</autreRevenu> <listeAvance> <item> <codeBarAvance>PBST</codeBarAvance> <codeLoiAvance>D</codeLoiAvance> </item> </listeAvance> <listeBien> <item> <codePostalBien>1040</codePostalBien> <nombreBienInterface>1</nombreBienInterface> <typeBien>01</typeBien> </item> </listeBien> <listeClient> <item> <categorieSocioProfessionelleClient>22</categorieSocioProfessionelleClient> <dateDebutEmploi>1969-12-31T23:59:59Z</dateDebutEmploi> <dateNaissanceClient>1988-05-05T23:00:00Z</dateNaissanceClient> </item> </listeClient> <listeColateral> <item> <codePostalColateral>1040</codePostalColateral> <nombreColateralInterface>1</nombreColateralInterface> <referenceColateral>B1B08ZIKVD00003L</referenceColateral> </item> </listeColateral> <listeProject> <item> <coutProjet>120000</coutProjet> <nombreProjetInterface>1</nombreProjetInterface> <typeProjet>B21</typeProjet> </item> </listeProject> <listePassif> </listePassif> <montantAcompte>0</montantAcompte> <montantDemandeCredit>120000</montantDemandeCredit> </demande> </validationDemandeCredit> </Body> </Envelope>
voici ce que contient mon dataset:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 [0] {Body} object {System.Data.DataTable} [1] {validationDemandeCredit} object {System.Data.DataTable} [2] {demande} object {System.Data.DataTable} [3] {listeAvance} object {System.Data.DataTable} [4] {item} object {System.Data.DataTable} [5] {listeBien} object {System.Data.DataTable} [6] {listeClient} object {System.Data.DataTable} [7] {listeColateral} object {System.Data.DataTable} [8] {listeProject} object {System.Data.DataTable}
je dois ensuite exporter mon dataset vers un fichier Excel.
comme vous le voyez chaque table va être une feuille.
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 foreach (System.Data.DataTable dt in ds.Tables) { oSheet = (Microsoft.Office.Interop.Excel.Worksheet)oWB.Sheets[indexcl]; oSheet.Activate(); oSheet.Name = ds.Tables[indexcl].TableName.ToString(); int rowCount = 1; foreach (DataRow dr in dt.Rows) { rowCount += 1; for (int i = 1; i < dt.Columns.Count + 1; i++) { if (rowCount == 2) { oSheet.Cells[1, i] = dt.Columns[i - 1].ColumnName; } oSheet.Cells[rowCount, i] = dr[i - 1].ToString(); } }
Et c'est là le problème.
quand on regarde les tables du dataset, on voit qu'il a fusionné les tags item.
J'aimerais gardé la structure du xml.
Càd
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 <listeAvance> <item> </item> </listeAvance> <listeBien> <item> </item> </listeBien> <listeClient> <item> </item> </listeClient> <listeColateral> <item> </item> </listeColateral> <listeProject> <item> </item> </listeProject>
Avez-vous une solution à ce problème?
Merci d'avance.
Bàv,
Partager