2013-02-26 62 views
0

如何生成构造给定文件夹的XML文件以递归方式表示其中的所有文件&子文件夹?在C#中创建表示文件夹结构(包括子文件夹)的XML文件

+0

你需要证明你尝试了一些东西! – 2013-02-26 18:21:41

+0

请提供您尝试过的一些示例。最好还提供您期望的输出类型的示例。如果你不能提供一个完整的例子然后展示你可以做什么(例如,如果你不知道如何枚举一个目录然后将其抽象出来) – Guvante 2013-02-26 18:21:55

回答

7

这是一个很好的问题示例,可以使用递归算法轻松解决!

伪代码:

function GetDirectoryXml(path) 
    xml := "<dir name='" + path + "'>" 

    dirInfo := GetDirectoryInfo(path) 
    for each file in dirInfo.Files 
     xml += "<file name='" + file.Name + "' />" 
    end for 

    for each subDir in dirInfo.Directories 
     xml += GetDirectoryXml(subDir.Path) 
    end for 

    xml += "</dir>" 

    return xml 
end function 

它可以用C#来完成和DirectoryInfo/XDocument/XElement类这样的:

public static XElement GetDirectoryXml(DirectoryInfo dir) 
{ 
    var info = new XElement("dir", 
        new XAttribute("name", dir.Name)); 

    foreach (var file in dir.GetFiles()) 
     info.Add(new XElement("file", 
        new XAttribute("name", file.Name))); 

    foreach (var subDir in dir.GetDirectories()) 
     info.Add(GetDirectoryXml(subDir)); 

    return info; 
} 

而且例子用法:

static void Main(string[] args) 
{ 
    string rootPath = Console.ReadLine(); 
    var dir = new DirectoryInfo(rootPath); 

    var doc = new XDocument(GetDirectoryXml(dir)); 

    Console.WriteLine(doc.ToString()); 

    Console.Read(); 
} 

我的笔记本上的目录之一的输出:

<dir name="eBooks"> 
    <file name="Edulinq.pdf" /> 
    <file name="MCTS 70-516 Accessing Data with Microsoft NET Framework 4.pdf" /> 
    <dir name="Silverlight"> 
    <file name="Sams - Silverlight 4 Unleashed.pdf" /> 
    <file name="Silverlight 2 Unleashed.pdf" /> 
    <file name="WhatsNewInSilverlight4.pdf" /> 
    </dir> 
    <dir name="Windows Phone"> 
    <file name="11180349_Building_Windows_Phone_Apps_-_A_Developers_Guide_v7_NoCover (1).pdf" /> 
    <file name="Programming Windows Phone 7.pdf" /> 
    </dir> 
    <dir name="WPF"> 
    <file name="Building Enterprise Applications with WPF and the MVVM Pattern (pdf).pdf" /> 
    <file name="Prism4.pdf" /> 
    <file name="WPF Binding CheatSheet.pdf" /> 
    </dir> 
</dir> 
+0

对不起,要问大家,但我正在寻找类似的东西来生成一个XML(或其他jQuery可访问的文件类型)。输出目录及其内容的XML(或其他)文件将被解析并用于制作音乐播放器。 我是一个ASP经典人(刚刚进入.NET),很好奇 - 如果我要从上面的代码开始,我可以使用什么类型的文件? .ASPX?他们无论如何要在ASP.NET网页中做到这一点? – derekmx271 2013-09-11 09:23:27

相关问题