Как лучше всего использовать XPath с очень большими файлами XML в .NET?
Мне нужно выполнить некоторую обработку довольно больших XML-файлов (здесь размер может быть больше гигабайта) в C #, включая выполнение некоторых сложных запросов xpath. У меня проблема в том, что стандартным способом, которым я обычно делаю это через библиотеки System.XML, нравится загружать весь файл в память, прежде чем он что-то с ним сделает, что может вызвать проблемы с памятью у файлов такого размера.
Мне совсем не нужно обновлять файлы, только читая их и запрашивая содержащиеся в них данные. Некоторые запросы XPath довольно сложны и проходят через несколько уровней отношений типа родитель-потомок - я не уверен, повлияет ли это на возможность использования потокового считывателя вместо загрузки данных в память в виде блока.
Один из способов заставить его работать, это выполнить простой анализ с использованием потокового подхода и, возможно, обернуть операторы XPath в преобразования XSLT, которые я потом смогу выполнить по файлам, хотя это кажется немного запутанным.
С другой стороны, я знаю, что есть некоторые элементы, через которые запросы XPath не будут проходить, поэтому, я думаю, я мог бы разбить документ на серию более мелких фрагментов на основе его исходной древовидной структуры, которая, возможно, могла бы быть достаточно маленькой для обработки в памяти без вызывая слишком много хаоса.
Я попытался объяснить свою цель здесь, так что, если я лаю совсем не по дереву с точки зрения общего подхода, я уверен, что вы, ребята, можете исправить меня ...