you colud create a recursive method. use a dictionary to store objects already visited.
here's a template: note use of HashSet in order to have no duplicate items at no cost
List< HashSet> GetDeps(XmlDocument doc, string item, List<string> entriesAlreadyVisited) {
var deps= new List<string>();
if(entriesAlreadyVisited.Contains(item))
return deps;
entriesAlreadyVisited.Add(iem);
foreach(var firstLevelDep in deps) {
var subDependencies= GetDeps(doc,firstLevelDep ,entriesAlreadyVisited);
foreach(var subDep in subDependencies) {
deps.Add(subDep );
}
}
return deps;
}
</string></string>
I hope it helps you