定义xml路径和文档树
我们可以使用系统默认的 Properties.Settings
配置档案,但可控制性不高,还是自己写比较方便。
private string xmlPath = "settings.xml";
private XmlDocument xml = new XmlDocument();
加载xml档案
加载之前记得检查文件是否存在
private void loadSetting()
{
if (File.Exists(xmlPath))
{
xml.Load(xmlPath);
}
}
创建xml档案及节点属性
如果文件不存在则创建档案,档案存在则直接加载
private void loadXml()
{
if (!File.Exists(xmlPath))
{
//File.Create(xmlFile);
//创建头部信息
XmlDeclaration dec = xml.CreateXmlDeclaration("1.0", "utf-8", null);
xml.AppendChild(dec);
//创建根节点
XmlElement root = xml.CreateElement("settings");
//创建子节点
XmlElement appsetting = xml.CreateElement("appsetting");
//添加属性
appsetting.SetAttribute("appname", "");
//绑定到文档树
root.AppendChild(appsetting);
xml.AppendChild(root);
//保存xml使配置生效
xml.Save(xmlPath);
}
//加载xml
xml.Load(xmlPath);
}
执行以下代码会生成如下空的文档树
XmlDeclaration dec = xml.CreateXmlDeclaration("1.0", "utf-8", null);
xml.AppendChild(dec);
XmlElement root = xml.CreateElement("settings");
XmlElement appsetting = xml.CreateElement("appsetting");
XmlElement webdav = xml.CreateElement("webdav");
webdav.SetAttribute("url", "");
webdav.SetAttribute("uid", "");
webdav.SetAttribute("pwd", "");
appsetting.AppendChild(webdav);
root.AppendChild(appsetting);
XmlElement processes = xml.CreateElement("processes");
XmlElement process = xml.CreateElement("process");
process.SetAttribute("enabled", "0");
process.SetAttribute("name", "");
process.InnerText = "";
processes.AppendChild(process);
root.AppendChild(processes);
xml.AppendChild(root);
xml.Save(xmlFile);

取得节点及获取节点属性和内容
//取得父节点
XmlNode node = xml.SelectSingleNode("//appsetting");
//取得单个子节点
XmlElement dav = (XmlElement)node.SelectSingleNode("//webdav");
//取得子节点属性
if (dav != null)
{
url = dav.GetAttribute("url");
uid = dav.GetAttribute("uid");
pwd = dav.GetAttribute("pwd");
}
//取得所有子节点
Dictionary<string, string> list = new Dictionary<string, string>();
foreach (XmlElement ele in node.ChildNodes)
{
if (ele.GetAttribute("enabled") == "0") continue;
list.Add(ele.GetAttribute("name"), ele.InnerText);
}