Bonjour,

J'utilise le code suivant pour importer un fichier xml dans un dataset.

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 );
            }
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
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.

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();
                            }
                        }
comme vous le voyez chaque table va être une feuille.

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,