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);
}
}
}