public class XmlFile
{
private string fileFolder;
private string fileName;
private string fPathBase = Directory.GetCurrentDirectory(); //结尾没有反斜杠
public TimeConfig(string aFileFolder = "xmlConfig", string aFileName = "config")
{
fileFolder = aFileFolder;
fileName = aFileName;
}
/// <summary>
/// 创建xml文件
/// </summary>
/// <param name="aRoot"></param>
/// <param name="aKey"></param>
/// <param name="aValue"></param>
public void CreateXmlFile(string aRoot, string aKey = "", string aValue = "")
{
XmlDocument xmlDoc = new XmlDocument();
//创建类型声明节点
XmlNode node = xmlDoc.CreateXmlDeclaration("1.0", "utf-8", "");
xmlDoc.AppendChild(node);
//创建根节点
XmlNode root = xmlDoc.CreateElement(aRoot);
xmlDoc.AppendChild(root);
if (!string.IsNullOrEmpty(aKey) && !string.IsNullOrEmpty(aValue))
{
CreateNode(aKey, aValue, xmlDoc, root);
}
xmlDoc.Save($"{fPathBase}//{fileFolder}//{fileName}.xml");
}
/// <summary>
/// 创建节点
/// </summary>
/// <param name="xmldoc"></param> xml文档
/// <param name="parentnode"></param>父节点
/// <param name="name"></param> 节点名
/// <param name="value"></param> 节点值
///
public void CreateNode(string name, string value, XmlDocument xmlDoc, XmlNode parentNode)
{
XmlNode node = xmlDoc.CreateNode(XmlNodeType.Element, name, null);
node.InnerText = value;
parentNode.AppendChild(node);
}
/// <summary>
/// 读取xml中某个节点的值
/// </summary>
/// <param name="aRoot"></param>
/// <param name="aKey"></param>
/// <param name="aDefaultValue"></param>
/// <returns></returns>
public string ReadValue(string aRoot, string aKey, string aDefaultValue)
{
try
{
string bFile = $"{fPathBase}//{fileFolder}//{fileName}.xml";
if (!File.Exists(bFile))
{
string bPath = $"{fPathBase}//{fileFolder}";
if (!Directory.Exists(bPath))
{
Directory.CreateDirectory(bPath);
}
CreateXmlFile(aRoot, aKey, aDefaultValue);
return aDefaultValue;
}
else
{
XmlDocument xml = new XmlDocument();
xml.Load(bFile);
XmlNode bNode = xml.SelectSingleNode($"//{aRoot}//{aKey}");
return bNode.InnerText;
}
}catch(Exception e)
{
return null;
}
}
/// <summary>
/// 给xml中某个节点赋值
/// </summary>
/// <param name="aRoot"></param>
/// <param name="aKey"></param>
/// <param name="aDefaultValue"></param>
public void WriteValue(string aRoot, string aKey, string aDefaultValue,ref string aExMsg)
{
try
{
string bFile = $"{fPathBase}//{fileFolder}//{fileName}.xml";
if (File.Exists(bFile))
{
string bPath = $"{fPathBase}//{fileFolder}";
if (!Directory.Exists(bPath))
{
Directory.CreateDirectory(bPath);
}
CreateXmlFile(aRoot, aKey, aDefaultValue);
}
else
{
XmlDocument xml = new XmlDocument();
xml.Load(bFile);
XmlNode bNode = xml.SelectSingleNode($"//{aRoot}//{aKey}");
bNode.InnerText = aDefaultValue;
}
}catch(Exception e)
{
aExMsg = e.Message;
}
}
}
C# 程序xml文件生成和读写操作
最新推荐文章于 2024-04-18 20:24:08 发布