gpt4 book ai didi

.net - LINQ to XML - 它是如何工作的?

转载 作者:数据小太阳 更新时间:2023-10-29 01:41:42 26 4
gpt4 key购买 nike

我的问题本质上是一个简单的问题,尽管我在这里寻找尽可能深入的答案:如何LINQ to XML在幕后工作?

现在,我在为各种应用程序使用 LINQ to XML 方面有相当多的经验,所以它的界面对我来说并不陌生,但我对内部如何运作一无所知。现在,我确实对 LINQ 提供程序的工作原理有了一些了解(本质上是实现 IQueryableIQueryProvider 并利用访问者模式)。但是,我还没有发现任何关于 LINQ to XML 的 LINQ 提供程序的信息——即使是乱用 Reflector 也没有让我得到任何东西,尽管也许我错过了显而易见的东西。最有趣的是,我无法在 System.Xml.Linq 程序集/命名空间中找到 LINQ 提供程序(IQueryProvider 的实现)的任何证据。

通过观察 LINQ to XML 模型,我认为它是 LINQ 的一种相当独特的形式,因为 LINQ 查询和相关语法似乎并不是该技术不可或缺的一部分,它似乎更多地基于一个可查询的 DOM 模型,它提供了许多有用的扩展方法。所以真的,我首先想知道的是,LINQ to XML 是否有标准意义上的查询提供程序(例如,LINQ to SQL 有),或者它本质上是一个带有扩展方法的框架,您可以在其上使用 LINQ to Objects 来方便使用。此外,我也很好奇从 XML 代码到 DOM 层次结构的解析/转换是如何完成的 - XDocument 在这个意义上是否与旧的 XmlDocument 相似?它是否在后台使用 XmlReader 或类似的工具来在加载时解析和解释文档?

这是一个非常开放的问题,因此欢迎提供有关 LINQ to XML 如何在幕后运行的任何信息。我在这里的主要目的是构建一幅关于如何设计这种特定 LINQ 技术的图景,以便我随后可以尝试自己模拟它以获得具有与 XML 类似结构的格式。

最佳答案

LINQ to XML 实际上只是 LINQ-to-Objects,它作用于表示 XML 的对象。因此,当您编写 LINQ 查询以从 XDocument 检索节点时(例如),您实际上只是在调用返回 IEnumerable 的扩展方法,并调用为 IEnumerable 定义的标准查询运算符。

因此,可以说 LINQ-to-XML 主要由表示 XML 的类的 XElement 系列和为这些类提供的许多扩展方法组成,以使查询更容易。

这也解释了here .

关于.net - LINQ to XML - 它是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/845106/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com