2010-12-02 19 views
1

Ich hatte ein Problem bei der Aktualisierung der Microsoft XML-Kern für meine Anwendung von msxml3.dll zu msxml6.dll. Ich habe den vcproj und die Header-Datei von mir auf den msxml6-Header und die Bibliotheksdatei verwiesen. Ich habe auch die Klassen-ID von msxml6 geändert, um mit der CoCreateVariant() - Funktion einen Document Praser zu erstellen.Upgrade auf MsXml6.dll

Während der Ausführung fand ich meine Anwendung löst die Behandlung von Ausnahmen und bricht ab. Dann debuggte ich mit Visual Studio und stellte fest, dass die getElementByTagName() - Funktion einen Null-Zeiger zurückgibt, während die msxml6.dll-Bibliothek verwendet wird, die wiederum einen Verweis zum Abbruch führt, und sie funktioniert gut mit msxml3.dll.

Weiß jemand, warum diese "unbehandelte Ausnahme" wegen msxml6.dll da war? Und wie kann ich es reparieren?

Antwort

0

Können Sie überprüfen, ob das Element Namespace hat? Wahrscheinlich liegt das an den Verhaltensänderungen zwischen MSXML3 und MSXML6, bei denen MSXML6 hinsichtlich des Namespace besser konform ist. Um dieses Problem zu beheben, sollten Sie stattdessen XPath verwenden.

+0

Danke Samuel. Ja, du hast Recht, ich versuche, msxml3.dll auf msxml6.dll zu aktualisieren. Die Anwendung, die ich hatte, ist komplett in C++ geschrieben. Da es mehr Speicherlecks gab, die ich in msxml3.dll finde, ist es besser, sie auf msxml6.dll zu aktualisieren. Können Sie näher erläutern, wie Xpath verwendet wird, um diesen Fehler zu beheben? – Santhosh77

+0

XPath ist dem Namespace bekannt, sodass Sie selectSingleNode und selectNodes verwenden können, um die gewünschten Knoten zu erhalten. Sie können nach MSDN für detaillierte Dokumentation suchen. –