我一直在寻找更新文件中xml的最佳方法。我刚刚切换到使用XmlReader(来自XDocument方法)获得速度(不必读取内存中的整个文件)。
我的XmlReader方法工作正常,当我需要读取值时,它会打开xml,开始读取并且只读取所需的节点,然后关闭所有内容。它非常快速有效。
现在我已经开始工作了,我想制作一个UPDATES xml的方法。我想保持同样的想法,只在内存中读取所需内容。所以我的想法是,直到我改变的节点然后使用编写器来更新该值。
我看到的所有内容都有一个XmlReader读取,同时使用XmlWriter编写所有内容。如果我这样做,我会认为我必须让它像XDocument那样运行整个文件。以此为answer。
是否可以只使用阅读器并阅读节点我尝试编辑然后更改innerxml或其他内容?
答案 0 :(得分:2)
按照设计,XmlReader
表示文档的“只读向前”视图,不能用于更新内容。使用Load
,XmlDocument
或XDocument
的{{1}}方法仍然会将整个文件读入内存。 (引擎盖下,XElement
和XDocument
仍然使用XElement
。)但是,您可以使用原始XmlReader
和XmlReader
组合使用重载采用XElement
的{{1}}方法。
您没有描述您的XML结构,但您希望执行与此类似的操作:
Load
要查找特定节点(例如,具有特定属性值),您需要执行与此类似的操作:
XmlReader