如何生成構造給定文件夾的XML文件以遞歸方式表示其中的所有文件&子文件夾?在C#中創建表示文件夾結構(包括子文件夾)的XML文件
回答
這是一個很好的問題示例,可以使用遞歸算法輕鬆解決!
僞代碼:
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>
對不起,要問大家,但我正在尋找類似的東西來生成一個XML(或其他jQuery可訪問的文件類型)。輸出目錄及其內容的XML(或其他)文件將被解析並用於製作音樂播放器。 我是一個ASP經典人(剛剛進入.NET),很好奇 - 如果我要從上面的代碼開始,我可以使用什麼類型的文件? .ASPX?他們無論如何要在ASP.NET網頁中做到這一點? – derekmx271 2013-09-11 09:23:27
這有點難以知道你有什麼問題。
您需要使用DirectoryInfo.GetFiles和DirectoryInfo.GetDirectories來獲取文件和文件夾列表,循環遞歸。然後使用Xml.XmlDocument編寫xml document。
使用'XDocument'然後'XmlDocument'實現會容易得多 – MarcinJuraszek 2013-02-26 18:26:03
@Marcin好點。 – 2013-02-26 18:29:33
- 1. 創建文件夾/文件結構
- 2. 創建文件夾結構
- 3. 使用PHP創建文件夾選擇列表 - 包括子文件夾?
- 4. 在指定文件夾中創建文件夾在新文件夾中創建子文件夾
- 5. 爲每個文件夾創建x個文件夾的文件夾結構
- 6. 創建重複的文件夾和文件夾結構
- 7. 查看.m文件中的一個文件夾(包括子文件夾)在MATLAB
- 8. 創建包含文件夾子文件夾的dirset
- 9. Windows:基於XML文件創建文件夾結構
- 10. 在文件夾bash中創建每個子文件夾的文件列表
- 11. 焦油/的bZIP文件,而不包括文件夾結構
- 12. 創建文件夾結構並將文件複製到特定文件夾中
- 13. 如何使用AppleScript創建文件夾(包含子文件夾)
- 14. 電子構建Windows文件夾結構
- 15. Maven:在構建資源文件夾中包含文件夾
- 16. NullReferenceException在創建文件夾結構時
- 17. 在Android Studio的佈局文件夾中創建子文件夾
- 18. 如何讀取文件夾中的所有txt文件? (包括子文件夾)
- 19. htaccess文件夾結構中子文件夾的重定向
- 20. 用c文件夾結構創建zip文件#
- 21. C#的文件夾和子文件夾
- 22. 在C中創建一個文件夾的Zip文件夾#
- 23. 創建EXE安裝用bat文件,文件夾,子文件夾
- 24. 文件夾結構創建從的csproj
- 25. 在VS 2010中創建文件/文件夾結構
- 26. 需要foreach再次包括文件夾和子文件夾
- 27. 如何在子文件夾中創建多個文件夾.......!
- 28. 在python中創建文件夾/子文件夾
- 29. 在資源文件夾中創建子文件夾
- 30. 在代碼點火器中創建文件夾/子文件夾
你需要證明你嘗試了一些東西! – 2013-02-26 18:21:41
請提供您嘗試過的一些示例。最好還提供您期望的輸出類型的示例。如果你不能提供一個完整的例子然後展示你可以做什麼(例如,如果你不知道如何枚舉一個目錄然後將其抽象出來) – Guvante 2013-02-26 18:21:55