我在使用XDocument
Load
或Parse
方法时通常会听到将整个文件加载到内存中,这就是建议不要使用此方法解析大文件的原因。 。但如果我使用以下重载来读取xml文件
XDocument xml = XDocument.Load(XmlReader.Create(@"C:\OP\file.xml", settings),LoadOptions.None);
它是否仍然将整个文件加载到内存中,如果是这样,这个过载有什么用呢?
答案 0 :(得分:5)
是的,仍然会将整个文件的内容加载到内存中表示中。它不如XElement.Load(XmlReader)
方法有用,它可以真正将文档的部分一次加载到内存中。
我认为XDocument.Load(XmlReader)
方法主要用于保持一致性 - 但我可以看到它在其他API提供XmlReader
而非原始数据的情况下很有用。例如,您可以拥有一些数据结构,通过允许您从中创建XmlReader
来提供“虚假”XML访问。这样就永远不需要序列化为真正的XML,然后需要再次解析。
另一个用例是您希望使用XmlReadSettings
中LoadOptions
无法使用的某些方面,例如忽略注释或使用特定的名称表。
但不,如果您担心文档不适合内存,则不应使用XDocument.Load(XmlReader)
。