Использование XmlReader
определенно будет самым быстрым методом, хотя вам, конечно, придется выполнять весь анализ вручную. Он читает напрямую из потока без кеширования, хотя использовать его не слишком удобно по сравнению с DOM.
Сравнение двух предложенных вами вариантов: сериализация должна быть быстрее, чем использование DOM, поскольку (я считаю) она не кэширует все дерево в памяти - она также, безусловно, имеет более простой в использовании интерфейс, если вы нацелены выполнить сериализацию.