我听说使用XDocument
的Load
或Parse
方法时通常会将整个文件加载到内存中,这就是为什么不建议使用这种方法解析大文件的原因...但如果我使用以下重载来读取xml文件呢?
XDocument xml = XDocument.Load(XmlReader.Create(@"C:\OP\file.xml", settings),LoadOptions.None);
它是否仍会将整个文件加载到内存中?如果是这样的话,这种过载有何作用?
我听说使用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中,然后再进行解析。LoadOptions
中不可用的XmlReadSettings
方面时,例如忽略注释或使用特定名称表。XDocument.Load(XmlReader)
。
XmlReadSettings
的能力不是很有用吗? - Evk