生成当前目录文件的xml描述
发布时间:2020-12-16 23:38:04 所属栏目:百科 来源:网络整理
导读:需求场景 :例如需要在当前目录下把相关文件组织成xml文件去描述。通常在组织项目中的升级文件时候可能会用到。 代码示例 : using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System
需求场景:例如需要在当前目录下把相关文件组织成xml文件去描述。通常在组织项目中的升级文件时候可能会用到。 代码示例: using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Text; using System.Xml; namespace GenerateUpgradeXml { class Program { //服务端升级xml文件名称 static readonly string serverXmlName = "AutoupdateService.xml"; //程序本身名称 static readonly string selfName = "GenerateUpgradeXml.exe"; //更新文件URL前缀 static readonly string host = "http://localhost"; //获取当前目录 static readonly string currentDirectory = System.Environment.CurrentDirectory; static void Main(string[] args) { CreateXml(); Console.WriteLine("生成完毕!"); Console.ReadKey(); } /// <summary> /// 创建xml文件 /// </summary> private static void CreateXml() { //创建xml文档对象 XmlDocument doc = new XmlDocument(); //创建根节点 XmlElement root = doc.CreateElement("updateFiles"); //头声明 XmlDeclaration declaration = doc.CreateXmlDeclaration("1.0","utf-8",null); doc.AppendChild(declaration); //获取当前目录对象 DirectoryInfo directoryInfo = new DirectoryInfo(currentDirectory); //调用递归方法组装xml文件 RecursiveDirectory(doc,root,directoryInfo); //追加根节点 doc.AppendChild(root); //保存文档 doc.Save(serverXmlName); } /// <summary> /// 递归目录下所有文件 /// </summary> public static void RecursiveDirectory(XmlDocument doc,XmlElement root,DirectoryInfo directoryInfo) { //遍历目录下的所有文件 foreach (FileInfo file in directoryInfo.GetFiles()) { //过滤生成后的升级xml文件和程序本身文件 if (file.Name== serverXmlName || file.Name== selfName) { continue; } //路径转换 string path = directoryInfo.FullName.Replace(currentDirectory,"").Replace("","/"); //创建节点 XmlElement child = doc.CreateElement("file"); child.SetAttribute("path",file.Name); child.SetAttribute("url",host + path + "/" + file.Name); //当前目录下的文件夹及附属文件 string fileName = file.Name; if (!string.IsNullOrEmpty(path)) { fileName = currentDirectory + path.Replace("/","") + "" + file.Name; } child.SetAttribute("lastver",FileVersionInfo.GetVersionInfo(fileName).FileVersion); child.SetAttribute("size",file.Length.ToString()); child.SetAttribute("needRestart","false"); root.AppendChild(child); } //遍历子目录并递归 foreach (DirectoryInfo di in directoryInfo.GetDirectories()) { RecursiveDirectory(doc,di); } } } } 效果图:? ?文件详情: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读