再利用の前にMSXML2.DOMDocumentオブジェクトの以前の内容を迅速に消去する方法はありますか?私はそれらを破棄し、毎回新しいインスタンスを作成する習慣を持っていましたが、これは無駄なものとして私を襲って、いくつかのテストケースがこれを確認するように見えます。速くクリアなMSXMLドキュメントまたは再作成?
この場合、移植性のためにMSXML 3.0を使用しています。この古いバージョンには、XPathを使用して大きなノードセットを選択する際にいくつかの欠点があります。ドキュメントツリー全体を選択して削除しようとすると、きれいに感じられず、速く実行されません。以前は、MSXML 3.0およびそれ以前のバージョンでは、SelectNodesメソッドを呼び出すことによって作成された選択オブジェクトが徐々にリンパ節転移が計算されます
:「怠惰な選択」MSXML 3.0用途は自信のいずれかを鼓舞しません。セット。 DOMツリーが変更された場合、selectNodes呼び出しがその内容を積極的に反復している間に、選択または返されたノードが変更される可能性があります。 MSXML 4.0以降では、ノードセットの結果は選択時に完全に計算されます。これにより、反復が簡単で予測可能であることが保証されます。まれに、この変更は以前の動作に対応するために作成されたレガシーコードに影響する可能性があります。
このようなオブジェクトを再利用するには、使用の間に残っている可能性のあるさまざまなプロパティ(SelectionLanguageなど)の現在の設定を考慮する必要があります。私はそれが大きな問題ではないはずだと思います。特に、再利用は常に同じパターンに従っています。
ロードされたDOMをクリアして再利用するためのきれいで速い方法、または再利用の選択肢よりも悪い可能性がある理由を入力したとします。
私はMSXMLではありませんが、Document-> putref_documentElement(新しく構築された空のルート要素)を呼び出すか、Document-> load(別のXMLソースへのポインタを使用して)を呼び出そうとしましたか? – reuben
私はコードでドキュメントを構築しているので読み込みには役立ちませんが、他のアイデアは試してみる価値があります。ありがとう!ほとんど明らかだが、私はそれを試していないかもしれない。 – Bob77
ルート要素を置き換えることは、そのトリックを行うようです。あまりにもこれは答えとして提案されていない悪い、私はそれを受け入れるだろう。 – Bob77