如何将 DataTable 的内容保存到 XML 文件以存储在我的 Web API 项目的 App_Data 文件夹中?
How can I save the contents of a DataTable to an XML file to be stored within my Web API project's App_Data folder?
我不想将 .XML 文件存储到硬盘上的某个位置(我需要关心);我希望它存储在项目的 App_Data 文件夹下。
我需要大量这样的名称,这些名称将在运行时计算,例如“gramps_minority_201509.xml”、“hijomio_carta_20151101_20151205.xml”等
我想将 DataTables 的内容保存到这些 XML 文件中,稍后在呈现页面时从中读取(XML 文件内容将填充页面上的网格)。
XML 文件可以在设计时添加到 App_Data 文件夹,方法是选择 添加 -> 新项目... -> Visual C# -> 数据 从 App_Data 文件夹上下文菜单,然后从那里的列表中选择“XML 文件”。
但是,此时您为 XML 文件提供了一个名称;如前所述,我需要命名这些 "on the fly",最终会有成千上万个。
那么如何在代码中创建这些 XML 文件,将 DataTables 的内容保存到其中?
更新
或者保存到 .json 会更好...
我强烈建议您使用 JSON 而不是 XML。使用 JSON 有很多众所周知的好处,我相信您也知道。所以我会跳过那个。
要实现你想要的,你可以使用JSON.NET很容易地将你的DataTable序列化为JSON字符串
public void Get()
{
string jsonString = JsonConvert.SerializeObject(datatable, Formatting.Indented);
string path = HttpContext.Current.Server.MapPath("~/App_Data/");
//Generate a filename with your logic..
string fileName = string.Concat(Guid.NewGuid().ToString(), ".json");
//Create the full Path
string fullPath = System.IO.Path.Combine(path, fileName);
//Create the json file
System.IO.File.WriteAllText(fullPath, jsonString);
}
我不想将 .XML 文件存储到硬盘上的某个位置(我需要关心);我希望它存储在项目的 App_Data 文件夹下。
我需要大量这样的名称,这些名称将在运行时计算,例如“gramps_minority_201509.xml”、“hijomio_carta_20151101_20151205.xml”等
我想将 DataTables 的内容保存到这些 XML 文件中,稍后在呈现页面时从中读取(XML 文件内容将填充页面上的网格)。
XML 文件可以在设计时添加到 App_Data 文件夹,方法是选择 添加 -> 新项目... -> Visual C# -> 数据 从 App_Data 文件夹上下文菜单,然后从那里的列表中选择“XML 文件”。
但是,此时您为 XML 文件提供了一个名称;如前所述,我需要命名这些 "on the fly",最终会有成千上万个。
那么如何在代码中创建这些 XML 文件,将 DataTables 的内容保存到其中?
更新
或者保存到 .json 会更好...
我强烈建议您使用 JSON 而不是 XML。使用 JSON 有很多众所周知的好处,我相信您也知道。所以我会跳过那个。
要实现你想要的,你可以使用JSON.NET很容易地将你的DataTable序列化为JSON字符串
public void Get()
{
string jsonString = JsonConvert.SerializeObject(datatable, Formatting.Indented);
string path = HttpContext.Current.Server.MapPath("~/App_Data/");
//Generate a filename with your logic..
string fileName = string.Concat(Guid.NewGuid().ToString(), ".json");
//Create the full Path
string fullPath = System.IO.Path.Combine(path, fileName);
//Create the json file
System.IO.File.WriteAllText(fullPath, jsonString);
}