背景:有这样的需求,需要对另一个程序的config文件进行处理,这里做下记录。
部分config文件如下:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
<appSettings>
<add key="StartDate" value="2019-01-01"/>
<add key="CellID" value="10"/>
</appSettings>
</configuration>
获取指定节点的值
private string GetConfig(string nodeKey)
{
string result = string.Empty;
XmlDocument xDoc = new XmlDocument();
string path = @"../Debug/Debug/测试用发送数据机器人.exe.config";
xDoc.Load(path);//加载xml文件
XmlNode xNode;
XmlElement xElem1;
xNode = xDoc.SelectSingleNode("//appSettings");//获取指定的xml子节点
xElem1 = (XmlElement)xNode.SelectSingleNode("//add[@key='" + nodeKey + "']");//获取子节点中指定的子节点
if (xElem1 != null)
{
result = xElem1.Attributes[1].InnerXml;
}
return result;
}
修改指定节点的值
public void ChangeConfig(string nodeKey,string nodeValue)
{
XmlDocument xDoc = new XmlDocument();
string path = @"../Debug/Debug/测试用发送数据机器人.exe.config";
xDoc.Load(path);//加载xml文件
XmlNode xNode;
XmlElement xElem1;
xNode = xDoc.SelectSingleNode("//appSettings");//获取指定的xml子节点
xElem1 = (XmlElement)xNode.SelectSingleNode("//add[@key='"+nodeKey+"']");//获取子节点中指定的子节点
//如果能获取到节点,就修改节点的value值
if (xElem1 != null)
{
xElem1.SetAttribute("value", nodeValue);//给节点中的value属性赋值(修改操作)
}
//如果不能获取到节点,就创建节点
//else
//{
// xElem2 = xDoc.CreateElement("add");
// xElem2.SetAttribute("key", "type");
// xElem2.SetAttribute("value", "teacher");
// xNode.AppendChild(xElem2);
//}
xDoc.Save(path);//保存xml文档
Console.WriteLine("保存成功!");
}