Получите глубину Объекта

У меня есть xml как это:

<A><B>test</B><B><B>test2</B></B><B><B><B>test2</B></B></B></A>

Как я могу получить уровень каждого из этих объектов с помощью linq к xml

уровень test=1 уровня test2=2 уровня test3=3

Я понятия не имею, сколькими узлы там будут или сколько уровней, там будет. Я могу записать это как рекурсивную функцию, но я думал, что linq к xml мог бы иметь что-то лучше для предложения.

5
задан zachary 5 February 2010 в 20:24
поделиться

2 ответа

Предполагая, что вы загрузили свой XML как XDocument или объект XElement ,

myXElement.AncestorsAndSelf (). Count ()

должен дать вам глубину любого заданного элемента.

6
ответ дан 14 December 2019 в 13:35
поделиться

Когда у вас есть корневой элемент, вы можете найти глубину каждого текстового узла следующим образом:

var depths =
  root.
    DescendantNodesAndSelf().
    Where(e => e.NodeType == XmlNodeType.Text).
    Select(n => new { Text = n.ToString(), Depth = n.Parent.Ancestors().Count()});
0
ответ дан 14 December 2019 в 13:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: