Это зависит от размера этих файлов и сложности данных. Насколько я понимаю, для таких XML-данных наилучшим подходом может быть использование запроса XPath и прохождение всех файлов, возможно, кэширование файлов с целью уменьшения накладных расходов при разборе.
Посмотрите на:
Классы XPathDocument, XmlDocument и запросы XPath
http://support.microsoft.com/kb/317069
Что-то вроде этого должно быть (хотя и не проверено):
XmlNamespaceManager nsmgr = new XmlNamespaceManager(new NameTable());
// if required, add your namespace prefixes here to nsmgr
XPathExpression expression = XPathExpression.Compile("//element[@date='20090101']", nsmgr); // your query as XPath
foreach (string fileName in Directory.GetFiles("PathToXmlFiles", "*.xml")) {
XPathDocument doc;
using (XmlTextReader reader = new XmlTextReader(fileName, nsmgr.NameTable)) {
doc = new XPathDocument(reader);
}
if (doc.CreateNavigator().SelectSingleNode(expression) != null) {
// matching document found
}
}
Примечание: хотя вы также можете загрузить XPathDocument непосредственно из URI / пути, использование средства чтения гарантирует, что используется та же таблица имен, что и для компиляции запроса XPath. Если бы использовалась другая таблица имен, вы не получили бы результаты запроса.