CSV to XML

[Résolu]
Signaler
Messages postés
17
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
27 juillet 2009
-
Messages postés
17
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
27 juillet 2009
-
Bonjour tout le monde

voici mon problème :
j'ai un fichier CSV que je dois transformer en XML, jusque là pas de soucis, ça marche, sauf que dans le CSV il y a des caractères (des espaces en l'occurence) dont je ne me sers pas et qui se retrouve donc dans mon fichier XML sous la forme "_X0200_" (symbolisation de l'espace dans les balises XML)
j'ai bien essayé la fonction Trim() en passant en paramèrtre toutes les manières de symboliser un espace, mais rien n'y fait...

voilà ce que ça donne :
 
    <Libelle_x0020_pays>EMIR.A.U</Libelle_x0020_pays>
    <_x0020_Date_x0020_validit_xFFFD__x0020_>01/01/2009</_x0020_Date_x0020_validit_xFFFD__x0020_>
    <cours_x0020__x0020__x0020__x0020_>4.74778</cours_x0020__x0020__x0020__x0020_>
    <code_x0020_monnaie>AED</code_x0020_monnaie>
    <_x0020_commentaire />
 

code :
    class csvToXml
    {
        public static void Main()
        {
            string pathSource = @"c:\test\TAUX.csv";
            string pathDestination = @"c:\test\TAUX.xml";
            ConvertCSVToXML cCSV2XML = new ConvertCSVToXML();
            cCSV2XML.convert(pathSource,pathDestination);
        }

        public class ConvertCSVToXML
        {
            private string _root = "liste";
            private string _node = "pays";
            private char _separator = ';';

            public bool convert(string pathSource, string pathDestination)
            {
                char[] trimChar = new char[4];
                trimChar[0] = ' ';
                trimChar[1] = '\x0020';
                trimChar[2] = '\u0020';
                trimChar[3] = (char)20;
                StreamReader stream = null;
                string[] saEntetes = null;
                string sLigne = "";

                // Initialisation des DataSet et DataTable
                DataSet csvDataSet = null;
                DataTable csvDataTable = null;
                try
                {
                    csvDataSet = new DataSet(_root);
                    csvDataTable = new DataTable(_node);
                    // Lecture du fichier CSV ligne par ligne
                    stream = new StreamReader(pathSource, true);
                    sLigne = stream.ReadLine().Trim(trimChar);
                    sLigne.Replace(" ", null);
                    sLigne.Replace("é","e");
                    // En tenant compte du séparateur
                    sLigne = sLigne.Trim(trimChar);
                    saEntetes = sLigne.Split(_separator);
                  
                    // Suppression des espaces avant et après le libellé des entêtes
                    saEntetes.ToString().Trim(trimChar);
                    for (int i = 0; i < saEntetes.Length; i++)
                    {
                        Console.WriteLine(sLigne);
                        csvDataTable.Columns.Add(saEntetes[i]).ToString();
                    }

                    sLigne = stream.ReadLine().Trim(trimChar);
                    while (sLigne != null)
                    {
                        csvDataTable.Rows.Add(sLigne.Split(_separator));
                        sLigne = stream.ReadLine();
                    }

                    csvDataSet.Tables.Add(csvDataTable);
                    csvDataSet.WriteXml(pathDestination);
                    return true;
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                    return false;
                }

                finally
                {
                    stream.Close();
                    if (csvDataSet != null) csvDataSet.Dispose();
                    if (csvDataTable != null) csvDataTable.Dispose();
                }
            }
        }
    }

merci d'avance

1 réponse

Messages postés
17
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
27 juillet 2009

problème résolu, il faut faire le trim sur :

                    for (int i = 0; i < saEntetes.Length; i++)
                    {
                        Console.WriteLine(sLigne);
                        csvDataTable.Columns.Add(saEntetes[i]).Trim().ToString();
                    }

voilà voilà
merci à tous ;)