c# - XDocument如何获取不在同一级别的两个节点的父级
问题描述
通过 linq 获取 XML 文档中不在同一级别的两个节点的最近父节点的最佳方法是什么?
解决方案
找到最近的共同祖先的一种简单方法是将第一个元素的所有祖先收集到一个哈希集中,然后找到该集合中第二个元素的第一个祖先:
XElement element1 = ...
XElement element2 = ...
var ancestors = new HashSet<XElement>(element1.Ancestors());
var common = element2.Ancestors().First(a => ancestors.Contains(a));
这种方法对于在相对较小的 XML 数据集上进行少量查询是有效的。如果预计最低共同祖先的查询数量会很高,您可能需要更高级的算法来解决 LCO 问题。
推荐阅读
- amazon-cognito - 如何在 cognito 中从 preSignUp 触发器发送错误消息
- android - 谷歌播放权限!您应用中的哪些核心功能需要短信和通话记录权限?
- performance - 删除 CSV 文件中的特定组成员身份大量用户列表
- php - PHP JQuery从下载对话框中获取内容
- android - 注册后,有什么方法可以对 android 和 iOS 使用相同的指纹认证?
- angular - 使用 gmail 登录在 Ionic 3 for IOS 中不起作用
- triggers - Azure Function App CosmosDBTrigger 被执行两次
- machine-learning - 灌溉中的机器学习方法
- javascript - 上传图像 onclick 蒙版图像而不是选择文件
- php - 如何使用来自数据库的下拉值插入列