我們在開發程序時,有時會將一些值存放於resx文件中,但想要改變它的值怎麼辦呢?例子如我在全局 資源(App_GlobalResources)中建立了一個資源文件Resource.resx。並建了兩個String值,Anm_Response 和Rqi_Response。 我們可以錄入進去,但如何在程序中改呢?
其實Resx文件是一個XML文件。被存放在名為"data"的結點中。如下邊文檔:
<data name="Anm_Response" xml:space="preserve">
<value>333333</value>
</data>
<data name="Rqi_Response" xml:space="preserve">
<value>44</value>
</data>
即然是XML文檔,我們就可以用改變XML文檔的方式改變其值。代碼如下:
using System.IO;
using System.Collections;
using System.Globalization;
using System.Xml;
using System.Resources;
/// <summary>
/// 修改
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnModify_Click(object sender, EventArgs e)
{
string filename = "Resource.resx";
//得到Xml文件路徑
filename = Request.PhysicalApplicationPath + "App_GlobalResources\\" + filename;
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(filename);
//得到數據項(得到所有為Data的結點)
XmlNodeList nlist = xmlDoc.GetElementsByTagName("data");
foreach (XmlNode xnVal in nlist)
{
if (xnVal.Attributes["xml:space"].Value == "preserve")
{
string sName = xnVal.Attributes["name"].Value;
switch (sName)
{
case "Anm_Response":
//修改值
xnVal.InnerText = txbAnmResponse.Text;
break;
case "Rqi_Response":
//修改值
xnVal.InnerText = txbRqiResponse.Text;
break;
default:
break;
}
}
}
//保存
xmlDoc.Save(filename);
}
讀取方法:
string sAnmResponse = HttpContext.GetGlobalResourceObject("Resource", "Anm_Response").ToString();
本文配套源碼