XDocument doc = ...
var clone = new XDocument(doc); // deep clone
var selectedElements =
clone.XPathSelectElements("/Root//TableRow/id") // выберем те элементы, которые нужно
.AncestorsAndSelf() // и их предков
.ToHashSet(); // и соберём в множество для эффективного поиска
// остальные удалим
clone.Descendants().Where(d => !selectedElements.Contains(d)).Remove();
好吧,额头上没有这样的东西,但你可以不用太用力就可以做到。
例子:
这是代码:
产生这个 XML:
也许更好的解决方案是使用 XSLT(但我不知道)。