XElement.Load 和 XDocument.Load 有啥区别?
Posted
技术标签:
【中文标题】XElement.Load 和 XDocument.Load 有啥区别?【英文标题】:What's the difference between XElement.Load and XDocument.Load?XElement.Load 和 XDocument.Load 有什么区别? 【发布时间】:2010-12-12 21:27:52 【问题描述】:如上所述,XElement.Load
和XDocument.Load
有什么区别?它们似乎都加载了一个 XML 文件。
【问题讨论】:
【参考方案1】:不同之处在于XElement
类型表示一个XML 片段,而XDocument
类型表示具有所有关联元数据的整个XML 文档。
话虽如此,但对于大多数简单的情况,您可以互换使用它们。
了解这两种类型在查询中的细微差别很重要,有关这方面的更多信息,我建议您阅读Querying an XDocument vs. Querying an XElement:
当您通过以下方式加载文档时
XDocument.Load
,你会注意到 你必须写查询 与您时略有不同 通过XElement.Load
加载。
【讨论】:
此外,如果您打算通过 Web 将生成的 XML 发送到某个 Web 服务,建议使用 XDocument。但是你要求.Load
,所以这可能不是你的情况。【参考方案2】:
没有多少场景可以 要求您创建一个 XDocument。 相反,您通常可以创建您的 具有 XElement 根节点的 XML 树。 除非你有特殊要求 创建文档(例如, 因为你必须创建处理 顶部的说明和 cmets 级别,否则您必须支持文档 类型),通常更方便 使用 XElement 作为根节点。
直接来自Valid Content of XElement and XDocument Objects。至于 Load 方法...它们都将内容加载到各自的对象中。
【讨论】:
我需要加载/修改/保存一些 InfoPath 表单,它们大量使用了处理指令。在我找到这篇文章并切换到 XDocument 之前,使用 XElement 会产生令人困惑的结果。太好了……谢谢!【参考方案3】:加载 cmets 时存在差异,在 XElement.Load() 的情况下不会加载 而 XDocument.Load() 也会得到 Comment
因此,在使用 Xlinq 时,我们应该使用 XDocument
【讨论】:
以上是关于XElement.Load 和 XDocument.Load 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章