我有一个应用程序,我需要浏览一堆xml文件并在xml文件中收集它们的链接关系。下面的代码工作得很好并且做了它应该做的事情,但是我得到了一个关于可能的枚举的resharper警告,虽然我想不出任何其他方法去做,代码真的闻起来对我来说。
简而言之,这就是我正在做的事情:
在试图解释它时,这对我来说听起来真的很复杂。但它的确有效。我只是想知道我是否错过了一些更优雅,也许更有效的明显方式。这不是一个性能问题,它通常只需要几分之一秒即可完成所有循环,但代码更加简单。
以下是相关代码的一部分:
List<XElement> xFiles =
(from descendant in mapdoc.Element("mapdoc").Descendants()
select descendant).ToList();
foreach (var xFile in xFiles)
{
//Only check links in xml docs.
List<string> extensions = new List<string> { ".dita", ".ditamap", ".xml" };
string extension = Path.GetExtension(xFile.Attribute("path").Value);
if (extensions.Contains(extension))
{
var hrefs = GetHrefs(xFile);
foreach (var href in hrefs)
{
var linkedToFiles = xFiles.Where(
file => file.Attribute("path").Value == href);
foreach (var linkedToFile in linkedToFiles)
xFile.Add(new XElement("link",
new XAttribute("id",
linkedToFile.Attribute("id").Value)));
}
}
}