CSV to XML [Résolu]

Messages postés
18
Date d'inscription
vendredi 25 mai 2007
Dernière intervention
27 juillet 2009
- - Dernière réponse : angrodmadje
Messages postés
18
Date d'inscription
vendredi 25 mai 2007
Dernière intervention
27 juillet 2009
- 29 janv. 2009 à 12:10
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
Afficher la suite 

Votre réponse

1 réponse

Meilleure réponse
Messages postés
18
Date d'inscription
vendredi 25 mai 2007
Dernière intervention
27 juillet 2009
3
Merci
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 ;)

Merci angrodmadje 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de angrodmadje

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.