C # Использование Linq для извлечения одного атрибута XML для каждого файла XML в каталоге - PullRequest
1 голос
/ 12 мая 2010

Как использовать Linq для извлечения одного атрибута XML из каждого XML-файла в каталоге и помещения этого элемента в список C #. Должен ли я проходить через каждый файл один за другим? Файлы XML довольно большие, поэтому я хотел бы сделать это без загрузки всего файла в память.

Спасибо, J

Ответы [ 2 ]

2 голосов
/ 12 мая 2010

Если файлы не являются большими (100 МБ +), я не смог бы отказаться от элегантности этого кода:

var result = Directory.GetFiles(filePath)
    .Select(path => XDocument.Load(path))
    .Select(doc => doc.Root.Element("A").Attribute("B").Value)
    .ToList();

Я действительно надеюсь, что ваши XML-файлы не такие большие ...

1 голос
/ 12 мая 2010

Вам необходимо просмотреть каждый файл, и это будет означать, по крайней мере, синтаксический анализ содержимого XML каждого файла, чтобы получить требуемый атрибут.

XDocument (т. Е. LINQ to SQL) будет анализировать и загружать полный документ в каждом случае, поэтому вам может быть лучше использовать экземпляр XmlReader напрямую. Это потребует дополнительной работы: вам придется читать узлы XML, пока вы не доберетесь до нужного, отслеживая, где вы находитесь.

...