Как выбрать все родительские элементы определенного элемента?

#c# #linq #linq-to-xml

#c# #linq #linq-to-xml

Вопрос:

Есть ли простой способ выбрать все узлы выше определенного уровня?

или единственным решением было бы удалить дочерние элементы этого элемента?

Ответ №1:

Это рекурсивно возвращает все родительские элементы узла:

 public static IEnumerable<XElement> Parents(this XObject obj)
{
    XElement e = obj.Parent;
    while (e != null)
    {
        yield return e;
        e = e.Parent;
    }
}
  

Если вам нужен документ, содержащий только узел и его родителей, вам нужно удалить все остальные узлы.