繁体   English   中英

使用递归函数获取所有XElement父级

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM