C# 使用XDocument.Load(xmlreader)方法?

C# 使用XDocument.Load(xmlreader)方法?,c#,xml-parsing,C#,Xml Parsing,在使用XDocument的Load或Parse方法时,我通常会听到将整个文件加载到内存中的声音,这就是为什么不建议使用此方法解析大文件的原因……但是,如果我使用以下重载来读取xml文件呢 XDocument xml = XDocument.Load(XmlReader.Create(@"C:\OP\file.xml", settings),LoadOptions.None); 它是否仍然将整个文件加载到内存中?如果是,这种重载有什么好处?是的,它仍然将整个文件的内容加载到内存表示中。它不如XE

在使用
XDocument
Load
Parse
方法时,我通常会听到将整个文件加载到内存中的声音,这就是为什么不建议使用此方法解析大文件的原因……但是,如果我使用以下重载来读取xml文件呢

XDocument xml = XDocument.Load(XmlReader.Create(@"C:\OP\file.xml", settings),LoadOptions.None);

它是否仍然将整个文件加载到内存中?如果是,这种重载有什么好处?

是的,它仍然将整个文件的内容加载到内存表示中。它不如
XElement.Load(XmlReader)
方法有用,该方法可以一次将文档的一部分加载到内存中

我认为
XDocument.Load(XmlReader)
方法主要是为了保持一致性,但我认为它在其他API提供
XmlReader
而不是原始数据的情况下非常有用。例如,您可以有一些数据结构,它通过允许您从中创建
XmlReader
来提供“伪”XML访问。这样,它就不需要序列化为真正的XML,然后需要再次解析

另一个用例是,您希望使用
XmlReadSettings
的某些方面,这些方面在
LoadOptions
中不可用,例如忽略注释或使用特定的名称表


但是,如果您担心文档无法放入内存,就不应该使用
XDocument.Load(XmlReader)

一个大小为20 MB的xml文件可以占用多少内存,并且这个数字会因不同的CPU(即不同的时钟速度和内核)而改变吗@Bumba:CPU根本不会改变所需的内存量。影响它的是文档结构(大量元素/属性中包含少量数据,或少数元素/属性中包含大量数据)-我建议您使用实际数据运行测试。配置
XmlReadSettings
的功能在这种情况下有用吗?@Evk:您的意思是如果您想控制忽略注释,而忽略注释是无法通过LoadOptions控制的?是的,我想是的。将编辑。