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

标签 c# xml-parsing

我通常在使用 XDocumentLoadParse 方法时听到整个文件加载到内存中,这就是为什么用这个解析大文件不推荐方法...但是如果我使用以下重载来读取 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/

相关文章:

java - 尝试使用 Robolectric 测试 XML 解析时出错

c# - 编写 xml 并将其读回 c#

xml - 在 Swift 4 中解析 XML

android - 在 Android studio 中解析 indoorGML 没有向我显示特定的标记点

c# - 计时器类和 C#

c# - 在 azure 辅助角色中使用 QueueClient.OnMessage

c# - 在 Windows Phone 8.1 中连接到 MySQL

c# - 仅使用按位运算符将两个整数相加?

java - android应用程序中的xml解析文件存储在哪里

c# - 如何使用 Bouncy CaSTLe 解密 AES/CCM 加密密文?