Обновление до MsXml6.dll

У меня возникла проблема при обновлении ядра Microsoft XML для моего приложения с msxml3.dll до msxml6.dll. Я изменил vcproj и свой файл заголовка, чтобы указать на файл заголовка и библиотеки msxml6. Я также изменил идентификатор класса msxml6 для создания редактора документа с помощью функции CoCreateVariant ().

Во время выполнения я обнаружил, что мое приложение выдает обработку ошибок и прерывается. Затем я отлаживал с помощью Visual Studio и обнаружил, что функция getElementByTagName () возвращает нулевой указатель при использовании библиотеки msxml6.dll, которая, в свою очередь, вызывает прерывание по дальнейшим ссылкам, и она отлично работает с msxml3.dll.

Кто-нибудь знает, почему это "необработанное исключение" возникло из-за msxml6.dll? И как я могу это исправить?


person Santhosh77    schedule 02.12.2010    source источник


Ответы (1)


Можете ли вы дважды проверить, есть ли у элемента пространство имен? Вероятно, это связано с поведенческими изменениями между MSXML3 и MSXML6, где MSXML6 более совместим с пространством имен. Чтобы решить эту проблему, вы можете вместо этого использовать XPath.

person Samuel Zhang    schedule 03.12.2010
comment
Спасибо, Самуэль. Да, вы правы, я пытаюсь обновить msxml3.dll до msxml6.dll. Приложение, которое у меня было, полностью написано на C ++. Поскольку в msxml3.dll было больше утечек памяти, мне лучше обновить его до msxml6.dll. Не могли бы вы рассказать, как использовать Xpath для исправления этой ошибки? - person Santhosh77; 03.12.2010
comment
XPath поддерживает пространство имен, поэтому вы можете использовать selectSingleNode и selectNodes для получения нужных узлов. Вы можете поискать в MSDN подробную документацию. - person Samuel Zhang; 07.12.2010