有没有一种快速的方法可以在重用之前清除 MSXML2.DOMDocument 对象的先前内容?我一直习惯于丢弃它们并每次都创建一个新实例,但这让我觉得很浪费,并且分析一些测试用例似乎证实了这一点。
在这种情况下,为了可移植性,我坚持使用 MSXML 3.0,并且我意识到这个旧版本在使用 XPath 选择大型节点集时有一些怪癖。尝试选择整个文档树然后删除它感觉不干净,并且运行速度不如我想要的那样快。MSXML 3.0 使用的“惰性选择”也不能激发信心:
以前,在 MSXML 3.0 及更早的版本中,调用 selectNodes 方法创建的选择对象会逐步计算节点集。如果修改了 DOM 树,而 selectNodes 调用仍在积极地迭代其内容,则该行为可能会更改被选择或返回的节点。在 MSXML 4.0 及更高版本中,节点集结果在选择时完全计算。这确保了迭代简单且可预测。在极少数情况下,此更改可能会影响为适应以前的行为而编写的遗留代码。
我还意识到重用这样的对象需要注意可能在使用之间徘徊的不同属性(SelectionLanguage 等)的当前设置。我认为这应该没什么大不了的,特别是如果重用总是遵循相同的模式。
我想我所追求的是一些干净和快速的方法来清除加载的 DOM 以重用它,或者更多关于为什么重用可能比娱乐的替代方案更糟糕的输入。