Xml from a directory structure
I needed to generate an XML document that showed all directories and html files in a certain folder and the folders below that. This is what I quickly wipped up:
using System;
using System.IO;
using System.Xml;
namespace MenuBuilder
{
/// <summary>
/// Summary description for MenuBuilder.
/// </summary>
public class MenuBuilder
{
public static void Main(string[] args)
{
Console.WriteLine("Starting...");
XmlDocument doc = new XmlDocument();
doc.LoadXml("<directory>" +
"</directory>");
//recurse through directories and return XmlNodes
XmlElement elem = GetData(@"c:\temp", doc);
doc.DocumentElement.AppendChild(elem);
doc.Save(@"c:\temp\dir.xml");
}
private static XmlElement GetData(string dirName, XmlDocument doc)
{
//create a new node for this directory
XmlElement elem = doc.CreateElement("dir");
DirectoryInfo di = new DirectoryInfo(dirName);
elem.SetAttribute("name",di.Name);
foreach (DirectoryInfo dinf in di.GetDirectories())
{
//Recursively call the directory with all underlying dirs and files
XmlElement elemDir = GetData(dirName + "\\" + dinf.Name, doc);
elem.AppendChild(elemDir);
}
//Append the files in this directory to the current xml node
foreach (FileInfo finf in di.GetFiles("*.htm*"))
{
XmlElement elemDir = doc.CreateElement("file");
elemDir.SetAttribute("name",finf.Name);
elem.AppendChild(elemDir);
}
return elem;
}
}
}