我在现有系统中重构一些代码.目标是删除XmlDocument的所有实例以减少内存占用.但是,当某些规则适用时,我们使用XPath来操纵xml.有没有一种方法可以使用XPath,而无需使用将整个文档加载到内存中的类?我们已经用XmlTextReader替换了所有其他实例,但是这些实例仅因为没有XPath且读取非常简单而起作用.
一些XPath使用其他节点的值作为其决策的基础.例如,消息节点的值可能基于数量节点的值,因此需要一次访问多个节点.
解决方法:
如果您的XPATH表达式基于访问多个节点,则只需要将XML读入DOM.不过有两件事.首先,您不必将所有内容都读取到DOM中,而只需将其查询.其次,您使用哪种DOM有所不同; XPathDocument是只读的,并且已针对XPATH查询速度进行了调整,这与更通用但昂贵的XmlDocument不同.