private XmlDocument GetOverview (IEnumerable<string> directories)
{
var index = new XmlDocument ();
var overview = index.CreateElement ("Overview");
var assemblies= index.CreateElement ("Assemblies");
var types = index.CreateElement ("Types");
var ems = index.CreateElement ("ExtensionMethods");
index.AppendChild (overview);
overview.AppendChild (assemblies);
overview.AppendChild (types);
overview.AppendChild (ems);
bool first = true;
foreach (var dir in directories) {
var indexFile = Path.Combine (dir, "index.xml");
try {
var doc = new XmlDocument ();
doc.Load (indexFile);
if (first) {
var c = doc.SelectSingleNode ("/Overview/Copyright");
var t = doc.SelectSingleNode ("/Overview/Title");
var r = doc.SelectSingleNode ("/Overview/Remarks");
if (c != null && t != null && r != null) {
var e = index.CreateElement ("Copyright");
e.InnerXml = c.InnerXml;
overview.AppendChild (e);
e = index.CreateElement ("Title");
e.InnerXml = t.InnerXml;
overview.AppendChild (e);
e = index.CreateElement ("Remarks");
e.InnerXml = r.InnerXml;
overview.AppendChild (e);
first = false;
}
}
AddAssemblies (assemblies, doc);
AddTypes (types, doc, dir);
AddChildren (ems, doc, "/Overview/ExtensionMethods");
}
catch (Exception e) {
Message (TraceLevel.Warning, "Could not load documentation index '{0}': {1}",
indexFile, e.Message);
}
}
return index;
}