2013-02-26 63 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

相關問題