我正在构建一个ASP.Net MVC4应用程序,客户希望能够提供XML配置文件,在应用程序中配置供应商列表,如下所示:
<Vendor>
<Vendor name="ABC Computers" deliveryDays="10"/>
<Vendor name="XYZ Computers" deliveryDays="15"/>
</Vendors>
该文件需要被删除到网络位置(即不在Web服务器上),我没有数据库来导入和存储数据。
客户还希望能够每天更新它。所以我想我应该在应用程序启动时进行某种导入(并验证文件)。
有关实现这一目标的最佳方法的任何好主意吗? - 数据需要快速访问 - 理想情况下,我只想导入/存储一次,或者能够快速访问它 - 我需要能够验证文件,因此能够切换到备份可能是明智的
一种想法是使用像Entity Framework这样的东西,只要我需要它就读取文件,但如果可能的话,如果可能的话,我会在应用程序的内存中保存它。
干杯 文森特
答案 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。