我通常在使用 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)
。
关于c# - 使用 XDocument.Load(xmlreader) 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49066489/