2010-12-02 3 views
1

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

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

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

ответ

0

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

+0

Спасибо, Самуил. Да, вы правы, я пытаюсь обновить msxml3.dll до msxml6.dll. Приложение, которое у меня было, полностью написано на C++. Поскольку в msxml3.dll было больше утечек памяти, я лучше обновил его до msxml6.dll. Не могли бы вы объяснить, как использовать Xpath для исправления этой ошибки? – Santhosh77

+0

XPath - это пространство имен, поэтому вы можете использовать selectSingleNode и selectNodes для получения нужных вам узлов. Вы можете найти MSDN для подробной документации. –