2010-01-21 109 views
0

我想將一個驅動器索引到一個xml文件。我的可憐的嘗試是這樣的:創建xdocument結構

 internal static void createIndex(String path, String driveLabel) 
     { 

      XDocument w = new XDocument(); 
      w.Add(createStructure(path, new XElement("root"))); 
      w.Save(driveLabel +".xml"); 
     } 

     internal static XElement createStructure(String path, XElement x) 
     { 
      try 
      { 
       String[] files = Directory.GetFiles(path); 
       String[] folders = Directory.GetDirectories(path); 

       foreach (String s in folders) 
       { 
        x.Add("directory", createStructure(s, x)); 
       } 

       foreach (String f in files) 
       { 
        x.Add(new XElement("file", f)); 
       }  
      } 
      catch (Exception e) { } 

      return x; 
     } 

一些輸出這裏 - 簡單的文件結構 - 根有2個MP3和包含2個文件1個文件夾。

<?xml version="1.0" encoding="utf-8"?> 
    <root> 
    <file>E:\.wd_tv\ph.db</file> 
    <file>E:\.wd_tv\ph.db-journal</file>directory<root> 
    <file>E:\.wd_tv\ph.db</file> 
    <file>E:\.wd_tv\ph.db-journal</file>directory</root> 
    <file>E:\180.mp3</file> 
    <file>E:\181.mp3</file> 
    </root> 

我收到了一些奇怪的混合標記那裏,我根本不明白它。任何幫助讚賞。使用OD的循環結構

,變更成:

<?xml version="1.0" encoding="utf-8"?> 
<root>directory<root>directory</root> 
    <file>E:\180.mp3</file> 
    <file>E:\181.mp3</file> 
</root> 
+0

你越來越hoodywha?拋出一些錯誤的輸出,因爲代碼看起來是正確的。 – Will 2010-01-21 13:51:45

回答

1

試試下面的循環結構:

 foreach (String s in folders) 
     { 
      x.Add("directory", createStructure(s, x)); 
      foreach (String f in files) 
      { 
       x.Add(new XElement("file", f)); 
      } 
     } 

這樣,您將顯示屬於目錄中的目錄後,立刻將文件在裏面。