J'ai une tâche où je dois lire un fichier csv et écrire le contenu dans une liste C#. Puisque le fichier csv peut changer sa mise en page (légende/ordre) dans le futur, je veux utiliser un fichier de configuration pour mapper les attributs..net en utilisant xml pour mapper csv en classe
Maintenant, je me demande s'il y a un exemple là donc je ne dois pas réinventer la weel: D
Ma source de données ressemble à ça (tabulation séparé)
Customer No. Customer Name Created Discount
10215 John Doe 2010-08-25 5050.23
Et mon classe comme ceci:
Class Customer
{
string CustomerNo {get;set;}
string CustomerName {get;set;}
DateTime CreatedOn {get;set;}
decimal Discount {get;set;}
}
maintenant, je veux avoir un fichier XML externe avec la définition que je puisse le modifier à l'exécution sans recompiler le code.
<customermapping mapstoclass="my.namespace.Customer">
<attribute csvcaption="Customer No." mapstoproperty="CustomerNo"
typeof="System.String" required="true">
<attribute csvcaption="Customer Name" mapstoproperty="CustomerName"
typeof="System.String" required="true">
<attribute csvcaption="Created" mapstoproperty="CreatedOn"
typeof="System.DateTime" required="false">
<attribute csvcaption="Discount" mapstoproperty="Discount"
typeof="System.Decimal" required="false">
</customermapping>
A la fin de la journée, je veux faire ce qui suit: (je peux déjà lire toutes les valeurs du fichier csv (la première ligne est la légende et est dans un tableau séparé)
List<Customer> customers =
CreateCustomerList(string[] csvCaptions, string[] csvLines,
"c:\customermapping.xml");
ne devrait pas être trop compliqué, mais comme je l'ai dit, si quelqu'un a déjà fait quelque chose de similaire, les exemples sont les bienvenus.
Bonjour, j'ai déjà eu une bonne solution de travail ... Je rencontre le même problème maintenant ... merci –
@jalchr: Non, mais pour mes derniers projets j'ai utilisé CsvHelper (de nuget) qui est génial. Il devrait être possible de créer une configuration dans le code et de la sérialiser en xml. –
effectivement je suis intéressé par l'inverse. J'ai besoin d'avoir une configuration définie en XML et appliquée aux fichiers entrants par rapport à un modèle de classe standard. Des pensées ? –