По сути, вы перестали анализировать проблему.
Начните с этого:
xe.Elements("foo")
это вернет последовательность всех <foo>
потомков xe
; это может быть пустая последовательность, , но никогда не будет нулевой .
Теперь перейдем к следующему:
xe.Elements("foo")
.Elements("bar")
При этом используется метод расширения Elements()
(часть каркаса) для поиска всех <bar>
дочерних элементов <foo>
элементов, которые у вас есть.
Повторяйте это весь путь вниз, пока не найдете элемент со значением. Затем используйте приведение, чтобы извлечь значение:
dim x
= (string) xe.Elements("foo")
.Elements("bar")
.Elements("Hello")
.Elements("World")
.FirstOrDefault()
Опять же, актерский состав предоставляется каркасом.
Вся проверка на null уже выполнена для вас умными программистами, написавшими фреймворк - это большая часть того, что делает XDocument
и друзей, с которыми так приятно кодировать.