재사용하기 전에 MSXML2.DOMDocument 개체의 이전 내용을 빨리 지울 수있는 방법이 있습니까? 나는 그들을 버리고 매번 새로운 인스턴스를 생성하는 습관을 가졌지 만,이 작업은 낭비로 다다 랐고 몇 가지 테스트 케이스를 프로파일 링하여이를 확인하는 것으로 보인다.빠른 명확한 MSXML 문서 또는 다시 만드시겠습니까?
이 경우에는 이식성을 위해 MSXML 3.0을 사용하고 있습니다. XPath를 사용하여 많은 수의 노드를 선택하면이 이전 버전에 약간의 단점이 있다는 것을 알고 있습니다. 전체 문서 트리를 선택한 다음 제거하면 깨끗하게 느껴지지 않으며 원하는만큼 빠르게 실행되지 않습니다. MSXML 3.0 및 이전 버전, 점차 노드 -을 계산하는 것 selectNodes 메서드를 호출에 의해 생성 된 선택 객체, 이전
:은 "게으른 선택"MSXML 3.0 용도는 자신감 하나를 영감을하지 않습니다 세트. DOM 트리가 수정 된 경우 selectNodes 호출이 내용을 계속 적극적으로 반복하는 동안이 동작으로 인해 선택되거나 반환 된 노드가 잠재적으로 변경 될 수 있습니다. MSXML 4.0 이상에서는 노드 집합 결과가 선택 시점에 완전히 계산됩니다. 이렇게하면 반복이 간단하고 예측 가능합니다. 드문 경우이 변경은 이전 동작을 수용하도록 작성된 레거시 코드에 영향을 줄 수 있습니다.
I는 또한 객체를 재사용하는 용도 사이에 머무르게 할 수 상이한 특성 (SelectionLanguage 등)의 현재 설정을 염두에 요구되는 실현. 나는 그것이 큰 거래는 아니어야한다고 생각한다. 특히 재사용이 항상 같은 패턴을 따른다면 더욱 그렇다.
로드 된 DOM을 지우고 재사용 할 수있는 깨끗하고 빠른 방법이라고 생각합니다. 재사용이 레크리에이션의 대안보다 더 나쁜 이유는 무엇입니까?
나는 MSXML이 아니지만 Document-> putref_documentElement (새로 생성 된 빈 루트 요소와 함께) 또는 Document-> load (다른 XML 소스에 대한 포인터를 사용하여)를 호출 해 보았습니까? – reuben
로딩은 코드에서 문서를 구성하는 데 도움이되지 않지만 다른 아이디어는 시도해 볼 가치가 있습니다. 감사! 거의 명백하게 보이지만 어쩌면 시도하지 않은 것일 수 있습니다. – Bob77
루트 요소를 바꾸는 것이 트릭을 수행하는 것 같습니다.너무 나쁘다 이것은 대답으로 제안되지 않았다, 나는 그것을 받아 들일 것이다. – Bob77