LINQ to XML не поддерживает прямое потоковое чтение, но мне удалось использовать XmlReader
, фильтрацию на основе , , а затем передать ее на XElement.Load
когда я обнаружил интересующее поддерево. Предполагается, что поддерево достаточно мало, чтобы поместиться в память. Когда Load
вернется, читатель будет перемещен за пределы этого поддерева, и вы сможете продолжать идти, пока не найдете следующее соответствующее поддерево и т. Д.
См. это сообщение в блоге MSDN для получения дополнительной информации и примера кода.
(Это то, что я сделал с дампом данных переполнения стека, кстати:)