Использование считывающего устройства только для пересылки, безусловно, будет наиболее эффективным подходом, и в этом случае вывод XmlReader представляется целесообразным, хотя, конечно, это все же больше, чем использование подхода DOM, который загружает весь файл сразу.
XmlReader предположительно является улучшением по сравнению с API синтаксического анализатора SAX XML, который появился в мире Java, но который стал стандартом де-факто в отрасли (за пределами Microsoft).
Если вы просто хотите быстро выполнить работу, для этой цели существует XmlTextReader (в .NET).
Если вы хотите изучить де-факто стандарт, который стабилен (а также доступен во многих языках программирования) и который заставит вас писать код очень эффективно и элегантно, но который также чрезвычайно гибок, тогда посмотрите на SAX. Однако, не беспокойтесь о самом SAX, если вы не собираетесь создавать сильно эзотерические парсеры XML. Есть много парсеров, которые используют SAX под крышками.
Пожалуйста, ознакомьтесь с моим ответом о SAX здесь, чтобы получить список ресурсов SAX и действительно креативную .NET XML-парсер , которая использует XmlTextReader в качестве основы:
SAX против XmlTextReader - SAX в C #