2015-08-10 3 views
1

Я работаю с файлом схемы xml, который содержит сложные типы с вложенными тегами выбора и последовательности. Они могут быть вложены друг в друга любым способом. Мне нужно выполнить различные методы в зависимости от первой последовательности или тега выбора. Мне не трудно найти последовательность или тег выбора с помощью метода .Descendants(). Но в этом случае я получаю только те теги, которые я проверяю в первую очередь.Как сравнить глубину узлов в XML-схеме?

Я думал определить глубину первой последовательности и метки выбора после заданного узла и сравнить их. Таким образом, я мог бы определить самый высокий тег. Как я могу это сделать? Я не могу найти способ определить глубину узла. Или есть другой способ выяснить, содержит ли узел последовательность, превышающую выбор или наоборот?

ответ

2

Вы могли бы написать метод расширения, который дает вам глубину элемента:

public static class ExtensionMethods { 
    public static int GetDepth(this XElement element) { 
     if (element.Parent == null) 
      return 0; 
     return element.Parent.GetDepth() + 1; 
    } 
} 

Используя это, вы можете отсортировать выбранные элементы по их глубине и взять тот, который вы ищете.

Смежные вопросы