У меня есть 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 мог бы иметь что-то лучше для предложения.
Предполагая, что вы загрузили свой XML как XDocument
или объект XElement
,
myXElement.AncestorsAndSelf (). Count ()
должен дать вам глубину любого заданного элемента.
Когда у вас есть корневой элемент, вы можете найти глубину каждого текстового узла следующим образом:
var depths =
root.
DescendantNodesAndSelf().
Where(e => e.NodeType == XmlNodeType.Text).
Select(n => new { Text = n.ToString(), Depth = n.Parent.Ancestors().Count()});