2013-07-05 2 views
1

Je construis une application MVC4 ASP.Net et le client veut être en mesure de fournir un fichier de configuration XML, pour configurer une liste des fournisseurs dans l'application, quelque chose comme ceci:fichier de configuration personnalisée dans MVC4

<Vendor> 
    <Vendor name="ABC Computers" deliveryDays="10"/> 
    <Vendor name="XYZ Computers" deliveryDays="15"/> 
</Vendors> 

Le fichier doit être déposé sur un emplacement réseau (pas sur le serveur Web) et je n'ai pas de base de données pour importer et stocker les données.

Le client veut également la possibilité de le mettre à jour quotidiennement. Donc je pense que je vais devoir faire une sorte d'importation (et valider le fichier) quand l'application démarre.

De bonnes idées sur la meilleure façon d'y parvenir? - Les données doivent être rapidement accessibles - Idéalement, je veux juste importer/stocker une fois, ou être en mesure d'y accéder rapidement - Je dois être en mesure de valider le fichier, il peut donc être prudent de pouvoir être capable de passer à une sauvegarde

Une idée était d'utiliser quelque chose comme Entity Framework et simplement lire le fichier quand j'en avais besoin, mais si possible, je le garderais en mémoire dans l'application si possible.

Vive Vincent

Répondre

1

Pas besoin d'importer dans une base de données ou utiliser Entity Framework. Vous pouvez simplement utiliser .NET Xml Serialization pour accomplir ceci.

L'outil de ligne de commande xsd.exe génère des classes C# à partir de votre fichier XML. A partir de la ligne de commande:

xsd.exe myfile.xml 
xsd.exe /c myfile.xsd 

La première commande et déduire créer un fichier de schéma XML (myfile.xsd) à partir de votre xml. La deuxième commande convertira le fichier de schéma en classes C#.

Ensuite, utilisez le XmlSerializer class désérialiser votre fichier XML en objets (en supposant plusieurs objets dans un seul fichier):

MyCollection myObjects= null; 
string path = "mydata.xml"; 

XmlSerializer serializer = new XmlSerializer(typeof(MyCollection)); 

StreamReader reader = new StreamReader(path); 
myObjects = (MyCollection)serializer.Deserialize(reader); 
reader.Close(); 

Vous pouvez utiliser le fichier xsd généré ci-dessus pour valider vos fichiers xml. Voici un lien montrant comment: http://msdn.microsoft.com/en-us/library/ms162371.aspx.

+0

Bonne réponse, merci! – VincentH

Questions connexes