使用递归函数获取所有XElement父元素
本文关键字:XElement 元素 递归函数 获取 | 更新日期: 2023-09-27 18:13:02
我试图获得给定XElement的所有父元素。我试着写这个函数,但它不起作用。页面不断加载。
public List<XElement> GetParents(XElement element)
{
List<XElement> parentList = new List<XElement>();
XElement cParent = element.Parent;
while (cParent != null)
{
parentList.Add(cParent);
GetParents(cParent);
}
return parentList;
}
Call:
Parents = GetParents(nodeOfPage);
有人知道如何解决我的问题吗?谢谢你
直接调用.Ancestors()
扩展方法
@SLaks的建议是伟大的,如果我是你,我一定会使用它,但它并没有澄清为什么你的代码不能工作
你的代码不工作,因为你有一个无限的while循环,你从来没有改变你的while循环中的cParent,所以它永远不会退出它。
你可以试试这个:
public List<XElement> GetParents(XElement element)
{
List<XElement> parentList = new List<XElement>();
XElement cParent = element.Parent;
while (cParent != null)
{
parentList.Add(cParent);
cParent = cParent.Parent;
}
return parentList;
}
或使用递归:
public List<XElement> GetParents(XElement element)
{
XElement cParent = element.Parent;
if (cParent == null)
{
return new List<XElement>();
}
var parents = GetParents(cParent);
parents.Add(cParent);
return parents;
}