using log4net;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Linq;
/// <summary>
/// 配置文件修改工具公共方法
/// </summary>
namespace 智慧工地大屏.util
{
public class ConfigXmlUtil
{
private static ILog logger = LogManager.GetLogger(typeof(ConfigXmlUtil));
// 配置文件相对路径
public static string configXMLPath = AppDomain.CurrentDomain.BaseDirectory + "Config\\config.xml";
/// <summary>
/// 修改配置文件的节点的值
/// </summary>
/// <param name="nodeName">节点名称为name的值</param>
/// <param name="value">要修改的节点的值</param>
/// <returns></returns>
public static bool updateNodeValue(string nodeNameValue, string value)
{
try
{
// 加载配置文件
XElement xelement = XElement.Load(configXMLPath);
// 遍历所有key节点
foreach (XElement element in xelement.Descendants("key"))
{
// 当其中某个key节点的name属性与nodeNameValue相匹配时,则修改这个key节点的值
if (nodeNameValue.Equals(element.Attribute("name").Value))
{
element.SetValue(value);
}
}
// 修改之后重新保存到配置文件
xelement.Save(configXMLPath);
return true;
}
catch (Exception ex)
{
logger.Error("信息:加载配置文件失败", ex);
return false;
}
}
/// <summary>
/// 修改配置文件的节点的属性的值
/// </summary>
/// <param name="nodeName">节点名称为name的值</param>
/// <param name="attributeName">属性名称</param>
/// <param name="value">要修改的属性的值</param>
/// <returns></returns>
public static bool updateAttributeValue(string nodeNameValue, string attributeName,string value)
{
try
{
// 加载配置文件
XElement xelement = XElement.Load(configXMLPath);
// 遍历所有的key节点
foreach (XElement element in xelement.Descendants("key"))
{
// 当其中某个key节点的name属性的值与nodeNameValue相匹配时,则修改该节点的某个属性以及其值,如果该节点不存在该属性,则会添加
if (nodeNameValue.Equals(element.Attribute("name").Value))
{
element.SetAttributeValue(attributeName,value);
}
}
// 修改之后需要重新保存配置文件
xelement.Save(configXMLPath);
return true;
}
catch (Exception ex)
{
logger.Error("信息:加载配置文件失败", ex);
return false;
}
}
/// <summary>
/// 根据父节点名称,添加指定的子节点
/// </summary>
/// <param name="parentNodeNameArr">从顶级节点开始依次向下直到最后一个父节点为止的所有节点名称</param>
/// <param name="xElementAttribute">子节点数据</param>
/// xElementAttribute = new XElement("Test", new XAttribute("Name", "Zery"), new XAttribute("Name", "Zery"));
/// xElementAttribute.SetValue("value");
/// <returns></returns>
public static bool addNode(string[] parentNodeNameArr, XElement xElementAttribute)
{
try
{
XDocument xDoc = XDocument.Load(configXMLPath);
if (parentNodeNameArr.Length == 1)
{
XElement xElement = xDoc.Element(parentNodeNameArr[0]);
xElement.Add(xElementAttribute);
}
else if (parentNodeNameArr.Length == 2)
{
XElement xElement = xDoc.Element(parentNodeNameArr[0]).Element(parentNodeNameArr[1]);
xElement.Add(xElementAttribute);
}
else if (parentNodeNameArr.Length == 3)
{
XElement xElement = xDoc.Element(parentNodeNameArr[0]).Element(parentNodeNameArr[1]).Element(parentNodeNameArr[2]);
xElement.Add(xElementAttribute);
}
else
{
return false;
}
xDoc.Save(configXMLPath);
return true;
}
catch (Exception ex)
{
logger.Error("信息:加载配置文件失败", ex);
return false;
}
}
/// <summary>
/// 删除第三节所有节点
/// </summary>
/// <param name="currentNodeNameArr"></param>
public static bool deleteNode(string[] currentNodeNameArr)
{
try
{
XDocument xDoc = XDocument.Load(configXMLPath);
XElement element = xDoc.Element(currentNodeNameArr[0]).Element(currentNodeNameArr[1]).Element(currentNodeNameArr[2]);
element.Remove();
xDoc.Save(configXMLPath);
return true;
}
catch (Exception ex)
{
logger.Error("信息:加载配置文件失败", ex);
return false;
}
}
/// <summary>
/// 遍历所有“key”节点
/// </summary>
public static bool LoadXmlConfigFile()
{
bool isLoadSuccess = true;
//加载系统配置参数
XElement xelement = XElement.Load(AppDomain.CurrentDomain.BaseDirectory + "Config\\config.xml");
foreach (XElement element in xelement.Descendants("key"))
{
// 获取name属性值
string key = element.Attribute("name").Value.Trim();
string describe = element.Attribute("describe").Value.Trim();
string value = element.Value.Trim();
string configLog = "加载:系统参数 Key-Value:[" + key + ":" + value + "] 节点:" + element.ToString();
try
{
SysContent.tabOneConfigDic.Add(key, value);
}
catch (Exception ex)
{
isLoadSuccess = false;
logger.Error("信息:加载配置文件失败" + configLog, ex);
break;
}
}
return isLoadSuccess;
}
}
}
12-08
244