Précédent   Forum du club des développeurs et IT Pro > Dotnet > Accès aux données
Accès aux données Forum d'entraide sur les technologies d'accès aux données de Microsoft (ADO.NET, Linq, Entity Framework, etc.).
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 06/08/2012, 11h57   #1
LEK
Membre éclairé
 
Inscription : mai 2005
Messages : 663
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 663
Points : 387
Points : 387
Par défaut Format générique d'import/export xml

Bonjour,
je travaille actuellement a mettre en place un module d'import/export de données. Je dispose d'un domaine métier assez simple (mais assez large aussi) et je dois créer un mécanisme permettant d'exporter les données de celui-ci vers d'autres système dans différents formats xml qui pourront varier dans le temps (plus fréquemment en phase de mise au point). Inversement le même format sera utilisé pour importer des données vers mon système.

A terme les personnes qui maintiendront les templates et en ajouteront d'autres n'ont aucune connaissance en programmation, il me faut donc imaginer un framework dynamique... En gros j'ai un ensemble de classes, par exemple :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
public class Post
    {
        public int PostId { get; set; }
        public DateTime Date { get; set; }
        public string Title { get; set; }
        public string Author { get; set; }
        public IList<Comment> Comments { get; set; }
    }
 
    public class Comment
    {
        public int CommentId { get; set; }
        public DateTime Date { get; set; }
        public string Author { get; set; }        
        public string Detail { get; set; }
    }
J'imagine un mécanisme permettant de remplir le fichier template xml suivant :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
<?xml version="1.0" encoding="iso-8859-1" ?>
  <template id="TmpBASE">
      <Posts>
    		<post type="Core.Domain.Post" id="{{PostId}}">                                                                     
    			<Author>{{Author}}</Author>  
          		<Title>{{Title}}</Title>                                     
    			<Comments bind="Core.Domain.Post.Comments">
    			   <comment id="{{CommentId }}">{{Date}} - {{Author}} - {{Detail}}</comment>
    			</Comments>
        </post>
      </Posts>  
  </template>
La grammaire que j'ai utilisée ressemble au binding xaml car cela me semble approprier.
Peut être devrais-je aussi remplacer

Mon application chargera automatiquement les données de la base puis devra les binder dynamiquement sur le template.
Celui-ci pourra évoluer indépendamment dans le temps, les noms des balises peuvent changer, etc...

Pour l'import, mon programme devra se baser sur le même template de définition afin de réhydrater mon modèle pour que je puisse l'insérer en base.
Je recevrai alors un fichier remplis comme celui-ci :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
<?xml version="1.0" encoding="iso-8859-1" ?>
      <Posts>
    		<post id="1">                                                                     
    			<Author>John</Author>  
			<Title>Un nouveau post</Title>                                     
    			<Comments >
    			   <comment id="1">10/01/2012 - Samuel - C'est un post intéressant!</comment>
    			   <comment id="2">18/01/2012 - Nico - Merci! Continuez comme ça</comment>
			   ...
    			</Comments>
	        </post>
		...
      </Posts>
A ce niveau de la réflexion, je souhaiterais savoir ce que vous en pensez :
- Existe-il déjà à votre connaissance un mécanisme ou une librairie qui effectue un type de tâche similaire ?
- Je ne sais pas encore comment m'y prendre pour effectuer le binding et plus encore comment recharger mon modèle d'après les données du fichier, auriez-vous des pistes/pattern? (En fait je me disais que j'allais essayez de comprendre les mécanismes du binding bidirectionel wpf pour m'en inspirer mais je ne sais pas quels sont les mécanismes sous-jacents)

Merci pour toute aide sur le sujet.
LEK est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 09h35.


 
 
 
 
Partenaires

Hébergement Web