Как лучше всего использовать XPath с очень большими файлами XML в .NET?

Мне нужно выполнить некоторую обработку довольно больших XML-файлов (здесь размер может быть больше гигабайта) в C #, включая выполнение некоторых сложных запросов xpath. У меня проблема в том, что стандартным способом, которым я обычно делаю это через библиотеки System.XML, нравится загружать весь файл в память, прежде чем он что-то с ним сделает, что может вызвать проблемы с памятью у файлов такого размера.

Мне совсем не нужно обновлять файлы, только читая их и запрашивая содержащиеся в них данные. Некоторые запросы XPath довольно сложны и проходят через несколько уровней отношений типа родитель-потомок - я не уверен, повлияет ли это на возможность использования потокового считывателя вместо загрузки данных в память в виде блока.

Один из способов заставить его работать, это выполнить простой анализ с использованием потокового подхода и, возможно, обернуть операторы XPath в преобразования XSLT, которые я потом смогу выполнить по файлам, хотя это кажется немного запутанным.

С другой стороны, я знаю, что есть некоторые элементы, через которые запросы XPath не будут проходить, поэтому, я думаю, я мог бы разбить документ на серию более мелких фрагментов на основе его исходной древовидной структуры, которая, возможно, могла бы быть достаточно маленькой для обработки в памяти без вызывая слишком много хаоса.

Я попытался объяснить свою цель здесь, так что, если я лаю совсем не по дереву с точки зрения общего подхода, я уверен, что вы, ребята, можете исправить меня ...

Ответы на вопрос(10)

Ваш ответ на вопрос