XDocument如何获取不在同一级别的两个节点的父节点

时间:2018-09-12 07:02:22

标签: c# xml linq linq-to-xml

通过linq获取XML文档中不在同一级别的两个节点的最近父级的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

查找最接近的公共祖先的一种简单方法是将第一个元素的所有祖先收集到一个哈希集中,然后找到该集合中第二个元素的第一个祖先:

XElement element1 = ...
XElement element2 = ...
var ancestors = new HashSet<XElement>(element1.Ancestors());
var common = element2.Ancestors().First(a => ancestors.Contains(a));

这种方法对于相对较小的XML数据集的少量查询非常有效。如果对最低共同祖先的查询数量预计很高,则可能需要more advanced algorithm才能解决LCO问题。

相关问题