создание структуры xdocument - PullRequest
       11

создание структуры xdocument

0 голосов
/ 21 января 2010

Я пытаюсь проиндексировать диск в XML-файл. Моя жалкая попытка такая:

        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;
        }

некоторые результаты здесь - простая файловая структура - root имеет 2 mp3s и 1 папку, содержащую 2 файла

 <?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>

1 Ответ

1 голос
/ 21 января 2010

Попробуйте следующую циклическую структуру:

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

Таким образом, вы будете отображать файлы, принадлежащие каталогу, сразу же после каталогов в нем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...