[英]Get all XElement parents with a recursive function
我正在尝试获取给定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;
}
致电:
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;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.