Нет, это не анализирует XML снова и снова;только один раз, когда вы вызываете
XDocument.Parse(e.Result);
Вызовы после этого просто обращаются к древовидной структуре в объекте xml.
«Разбор» означает анализ неструктурированной текстовой строки (такой как происходит изфайл) и создание структур данных (таких как дерево) из него.Ваши вызовы ... .Element("foo")
не разбираются, а получают доступ к частям структуры данных, которая была создана с помощью вызова XDocument.Parse()
.
Если вам интересно, повторяет ли ваш код некоторые шаги с избыточностью и может ли быть оптимизирован,тогда да, вы избыточно пересекаете ipb/profile
.Это не синтаксический анализ, но вызовы Element ("foo") должны выполнить некоторую работу, сравнивая строковые аргументы с именами дочерних элементов.Предложение @ Oded исправляет это по соображениям читабельности, но также способствует эффективности.