XElement.Load和XDocument.Load有什么区别?

38

如上所述,XElement.LoadXDocument.Load 有何不同?它们都似乎加载一个 XML 文件。

3个回答

34

不同之处在于,XElement 类型表示 XML 片段,而 XDocument 类型表示带有所有相关元数据的整个 XML 文档。

话虽如此,对于大多数简单情况,您可以交替使用它们。

重要的是要理解这两种类型之间查询的微妙差别,有关更多信息,建议阅读 查询 XDocument vs. 查询 XElement

当通过 XDocument.Load 加载文档时,您会注意到必须稍微以不同于通过 XElement.Load 进行加载的方式编写查询。


此外,如果您打算通过网络将生成的XML发送到某些Web服务,则建议使用XDocument。但是,您要求“ .Load”,所以这可能不是您的情况。 - Alex Bagnolini

10

很少有情景需要您创建XDocument。相反,您通常可以创建具有XElement根节点的XML树。除非您有特定要求来创建文档(例如,因为您必须在顶层创建处理指令和注释,或者您必须支持文档类型),否则使用XElement作为根节点通常更方便。

来自XElement和XDocument对象的有效内容。就Load方法而言...它们都将内容加载到各自的对象中。


我需要加载/修改/保存一些InfoPath表单,它们广泛使用处理指令。使用XElement会导致混乱的结果,直到我找到了这篇文章并切换到XDocument。所以...谢谢! - Jasper

1

XElement.Load() 在加载注释时会有所不同,如果使用该方法,则不会加载注释。 而 XDocument.Load() 会获取注释。

因此,在使用 Xlinq 时,我们应该选择使用 XDocument。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接