我有这样的xml:
<A><B>test</B><B><B>test2</B></B><B><B><B>test2</B></B></B></A>
如何使用linq to xml
获取每个项目的级别测试水平= 1级测试2 = 2级测试3 = 3
我不知道会有多少个节点或者有多少个级别。我可以把它写成递归函数,但我认为linq to xml可能有更好的东西。
答案 0 :(得分:6)
假设您已将XML加载为XDocument
或XElement
对象,
myXElement.AncestorsAndSelf().Count()
应该给你任何给定元素的深度。
答案 1 :(得分:0)
当你有一个根元素时,你可以找到每个文本节点的深度,如下所示:
var depths =
root.
DescendantNodesAndSelf().
Where(e => e.NodeType == XmlNodeType.Text).
Select(n => new { Text = n.ToString(), Depth = n.Parent.Ancestors().Count()});