C#操作xml配置档案

定义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);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值