C# 配置文件动态生成

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Xml;
using System.Windows.Forms;

namespace AliWorkbenchProgram
{
    class ClassConfigurationsOp
    {
        public ClassConfigurationsOp()
        {
            CreateConfigXml(); //创建一个配置目录文档config.xml
            CreateConfigDirectory();//批量创建配置目录
        }
        //批量创建配置目录
        public void CreateConfigDirectory()
        {
            string strGetCurrentDirectory = Directory.GetCurrentDirectory();//获取应用程序的当前工作目录
            string newPath = Path.Combine(strGetCurrentDirectory, "config.xml");//通过Path类的Combine方法可以合并路径
            //初始化一个doc
            XmlDocument xmlDoc = new XmlDocument();
            //加载路径(方法1) 后面直接跟路径
            xmlDoc.Load(newPath);
            //方法二 将XML转化为 一个string 加载
            //xmlDoc.LoadXml (File.ReadAllText("AssetsMyInfo"));

            //获取第一个节点,如果xml文档有<?xml version =“1.0”encoding =“utf-8”?>这样的字符,那么x.FirstChild就指的是这个xml,如果没有,那么就是指的根节点
            //XmlNode root = xmlDoc.FirstChild;
            XmlNode root = xmlDoc.SelectSingleNode("ConfigDirectory");

            //获取当前节点下的所有子节点
            XmlNodeList list = root.ChildNodes;
            XmlNode listNode;

            for (int i = 0; i < list.Count; i++)
            {
                   listNode = list.Item(i);
                   string strCreateDirectory = Path.Combine(strGetCurrentDirectory, listNode.InnerText);//通过Path类的Combine方法可以合并路径

                    // 创建目录时如果目录已存在,则不会重新创建目录,且不会报错。创建目录时会自动创建路径中各级不存在的目录。
                    //通过Directory类的CreateDirectory方法创建。
                    Directory.CreateDirectory(strCreateDirectory);
            }

        }



        //创建一个配置目录文档config.xml
        public void CreateConfigXml()
        {
            string strGetCurrentDirectory = Directory.GetCurrentDirectory();//获取应用程序的当前工作目录
            string newPath = Path.Combine(strGetCurrentDirectory, "config.xml");//通过Path类的Combine方法可以合并路径

            //首先创建 XmlDocument xml文档 
            XmlDocument xml = new XmlDocument();
            //xml文件头
            xml.AppendChild(xml.CreateXmlDeclaration("1.0", "UTF-8", "yes"));

            //创建根节点 configDirectory           
            XmlElement configDirectory = xml.CreateElement("ConfigDirectory");
            //把根节点加到xml文档中            
            xml.AppendChild(configDirectory);

            //创建一个节点 logDirectory(用于做子节点)           
            XmlElement logDirectory = xml.CreateElement("logDirectory");
            //path节点中的文本内容为 E:\Test\ @用于转义后面的'\'            
            logDirectory.InnerText = "Log";
            //将path添加为config的子节点            
            configDirectory.AppendChild(logDirectory);

            //创建一个节点 dataDirectory(用于做子节点)           
            XmlElement dataDirectory = xml.CreateElement("dataDirectory");
            //path节点中的文本内容为 E:\Test\ @用于转义后面的'\'            
            dataDirectory.InnerText = "Data";
            //将path添加为config的子节点            
            configDirectory.AppendChild(dataDirectory);

            //创建一个节点 backupDirectory(用于做子节点)           
            XmlElement backupDirectory = xml.CreateElement("backupDirectory");
            //path节点中的文本内容为 E:\Test\ @用于转义后面的'\'            
            backupDirectory.InnerText = "Backup";
            //将path添加为config的子节点            
            configDirectory.AppendChild(backupDirectory);

            //创建一个节点 imagesDirectory(用于做子节点)           
            XmlElement imagesDirectory = xml.CreateElement("imagesDirectory");
            //path节点中的文本内容为 E:\Test\ @用于转义后面的'\'            
            imagesDirectory.InnerText = "Images";
            //将path添加为config的子节点            
            configDirectory.AppendChild(imagesDirectory);

            //创建一个节点 systemDirectory(用于做子节点)           
            XmlElement systemDirectory = xml.CreateElement("systemDirectory");
            //path节点中的文本内容为 E:\Test\ @用于转义后面的'\'            
            systemDirectory.InnerText = "System";
            //将path添加为config的子节点            
            configDirectory.AppendChild(systemDirectory);


            //创建一个节点 usersDirectory(用于做子节点)           
            XmlElement usersDirectory = xml.CreateElement("usersDirectory");
            //path节点中的文本内容为 E:\Test\ @用于转义后面的'\'            
            usersDirectory.InnerText = "Users";
            //将path添加为config的子节点            
            configDirectory.AppendChild(usersDirectory);

            //创建一个节点 defaultDirectory(用于做子节点)           
            XmlElement defaultDirectory = xml.CreateElement("defaultDirectory");
            //path节点中的文本内容为 E:\Test\ @用于转义后面的'\'            
            defaultDirectory.InnerText = "Default";
            //将path添加为config的子节点            
            configDirectory.AppendChild(defaultDirectory);





            /*

            //以下Regex同理            
            XmlElement regex = xml.CreateElement("Regex");
            regex.InnerText = "<![CDDATA[@^abc$]]>";
            configDirectory.AppendChild(regex);
            XmlElement ini = xml.CreateElement("ini");
            //所以我们需要创建 ini标签里的xml属性 属性名为timeout            
            XmlAttribute timeout = xml.CreateAttribute("timeout");
            //timeout属性的内容为200            
            timeout.InnerText = "200";
            //标签ini里的文档内容为 time            
            ini.InnerText = "time";
            //创建完标签的属性timeout 后需要将其添加到ini标签的属性里            
            ini.Attributes.Append(timeout);
            //最后将ini标签添加到config 父节点里           
            configDirectory.AppendChild(ini);

            */

            //最后将整个xml文件保存           
            xml.Save(newPath);
        }




    }
}

猜你喜欢

转载自blog.csdn.net/zgscwxd/article/details/86648355