CSV to XML [Résolu]

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

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 96 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.