MVC4中的自定义配置文件

时间:2013-07-05 13:17:23

标签: asp.net-mvc configuration import

我正在构建一个ASP.Net MVC4应用程序,客户希望能够提供XML配置文件,在应用程序中配置供应商列表,如下所示:

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

该文件需要被删除到网络位置(即不在Web服务器上),我没有数据库来导入和存储数据。

客户还希望能够每天更新它。所以我想我应该在应用程序启动时进行某种导入(并验证文件)。

有关实现这一目标的最佳方法的任何好主意吗? - 数据需要快速访问 - 理想情况下,我只想导入/存储一次,或者能够快速访问它 - 我需要能够验证文件,因此能够切换到备份可能是明智的

一种想法是使用像Entity Framework这样的东西,只要我需要它就读取文件,但如果可能的话,如果可能的话,我会在应用程序的内存中保存它。

干杯 文森特

1 个答案:

答案 0 :(得分:1)

无需将其导入数据库或使用Entity Framework。您只需使用.NET Xml序列化即可完成此任务。

命令行工具xsd.exe将从您的Xml文件生成c#类。从命令行:

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

第一个命令将从xml推断并创建一个xml架构文件(myfile.xsd)。第二个命令将模式文件转换为c#classes。

然后使用XmlSerializer class将xml文件反序列化为对象(假设一个文件中有多个对象):

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();

您可以使用上面生成的.xsd文件来验证您的xml文件。以下链接显示了如何:http://msdn.microsoft.com/en-us/library/ms162371.aspx