Три наиболее распространенных метода чтения:
XmlDocument
Он читает весь файл в виде древовидной структуры, к которой можно получить доступ, используя XPath или просматривая все узлы. Для очень большого файла требуется много памяти, так как вся структура XML должна быть загружена в память. Очень хороший и простой в использовании файл меньшего размера (менее нескольких мегабайт).
XmlReader
Быстро, но также и настоящая боль в использовании, поскольку она последовательна. Если вам когда-нибудь понадобится вернуться назад, вы не сможете этого сделать, а структура XML обычно очень склонна к неорганизованным порядкам. Кроме того, если вы читаете из бесконечного потока XML, это, вероятно, единственный путь.
XML-сериализаторы
Это в основном все делает за вас, вы предоставляете корневой объект вашей модели, а он создает и читает XML для вас. Тем не менее, вы почти не контролируете структуру, и чтение старых версий вашего объекта - это боль. Так что это не очень хорошо сработает для настойчивости.
XDocument и LINQ to XML
Как отметил Даниэль Стрейт. Но я не знаю этого достаточно, чтобы комментировать. Я приглашаю любого редактировать пост и добавлять недостающую информацию.
Теперь письмо - это другая история. Поддерживать XmlDocument очень сложно, а XmlWriter очень прост в использовании.
Исходя из моего опыта, я бы сказал, что лучшая комбинация - писать с использованием XmlWriter и читать с использованием XmlDocument.