我正在重构现有系统中的一些代码。目标是删除 XmlDocument 的所有实例以减少内存占用。但是,当某些规则适用时,我们使用 XPath 来操作 xml。有没有一种方法可以在不使用将整个文档加载到内存中的类的情况下使用 XPath?我们已将所有其他实例替换为 XmlTextReader,但这些实例之所以有效,是因为没有 XPath 且读取非常简单。
一些 XPath 使用其他节点的值作为其决策的基础。比如message节点的值可能是基于amount节点的值,所以需要同时访问多个节点。
最佳答案
如果您的 XPATH 表达式基于访问多个节点,您只需将 XML 读入 DOM。不过有两件事。首先,您不必将其全部 读入 DOM,只需将您要查询的部分读入即可。其次,您使用哪个 DOM 会有所不同; XPathDocument 是只读的,并针对 XPATH 查询速度进行了调整,这与更通用但昂贵的 XmlDocument 不同。
关于不使用 XmlDocument 的 C# xml 读/写/xpath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1504467/