2010-12-02 8 views
1

J'ai rencontré un problème lors de la mise à niveau du noyau Microsoft XML pour mon application de msxml3.dll à msxml6.dll. J'ai chnaged le vcproj, et le dossier d'en-tête de moi pour pointer vers l'en-tête et le fichier de bibliothèque de msxml6. J'ai également changé l'identifiant de classe de msxml6 pour créer un document praser en utilisant la fonction CoCreateVariant().Mise à niveau vers MsXml6.dll

Au cours de l'exécution, j'ai trouvé que mon application rejetait la gestion sans exception et abandonne. Ensuite, j'ai débogué avec Visual Studio et j'ai découvert que la fonction getElementByTagName() renvoyait un pointeur NULL en utilisant la bibliothèque msxml6.dll, ce qui à son tour provoquait une interruption du fonctionnement et fonctionnait correctement avec msxml3.dll.

Quelqu'un sait-il pourquoi cette "exception non gérée" était là en raison de msxml6.dll? Et comment puis-je le réparer?

Répondre

0

Pouvez-vous vérifier si l'élément a un espace de noms? Probablement c'est à cause des changements de comportement entre MSXML3 et MSXML6 où MSXML6 est plus conforme en termes d'espace de noms. Pour résoudre ce problème, vous pouvez utiliser XPath à la place.

+0

Merci Samuel. Oui, vous avez raison de mettre à jour msxml3.dll en msxml6.dll. L'appplication que j'ai eu est complètement écrite en C++. Comme il y avait plus de fuite de mémoire que je trouve dans msxml3.dll, je me sens mieux de mettre à jour vers msxml6.dll. Pourriez-vous expliquer comment utiliser Xpath pour corriger cette erreur? – Santhosh77

+0

XPath prend en compte l'espace de noms de sorte que vous pouvez utiliser selectSingleNode et selectNodes pour obtenir les nœuds souhaités. Vous pouvez rechercher MSDN pour une documentation détaillée. –

Questions connexes