Хотя теоретически было бы возможно создать потоковое считывающее устройство, выполняющее запрос XPath для потока, я не знаю ни одной такой реализации; процессоры XPath в .NET Framework (в XDocument
, XmlDocument
и XPathDocument
) все считывают документ в память перед выполнением запроса. Все эти объекты могут читать потоки.
Если скорость имеет значение, XPathDocument
и XPathNavigator
, вероятно, будут самыми быстрыми, поскольку эти объекты позволяют напрямую выполнять итерации по узлам во время выполнения запроса, а не выполнять запрос и возвращать список узлов для вам перебирать. (На самом деле XDocument.XPathEvaluate
может сделать это тоже; в документации не сказано.)