Подтвердить что ты не робот

Какую версию MSXML я должен использовать?

Похоже, это был бы общий вопрос, хотя я не мог найти его на SO.

Какую версию MSXML следует использовать в моих приложениях, и что еще более важно, как мне решить?

Есть MSXML3, 4, 5 и 6.

Недавно я опубликовал код calling-wcf-service-by-vbscript, в котором использовался MSXML v4. AnthonyWJones сообщил, что я не должен использовать 4, но вместо этого 3 или 6, но, вероятно, 3. Конечно, не v5!

Почему? Я хотел бы узнать больше о критериях выбора версии MSXML для использования в моих приложениях.

Бонусный вопрос. У кого-нибудь есть сводка различий между различными версиями MSXML с течением времени?


Резюме:

  • MSXML6
    Должен быть первый выбор. был выпущен в 2006 году и включает в себя перфомансы и исправления соответствия. Используйте это, если сможете. Это хорошо. Нет модулей слияния; чтобы связать MSXML6 с вашим приложением, MS предлагает упаковать файл MSIML6 msi. MSXML6 - это обновление от MSXML3/4, но не заменяет его, потому что он прекращает некоторые функции. Здесь вы можете получить MSI здесь.
  • MSXML3
    Вторая возможность. Наиболее широко развернутая версия. Первоначально отправлен в марте 2000 года. Активно поддерживается, нет новых функций. В настоящее время поддерживается, если вы находитесь на SP5 (поставляется в 2005 году) или позже. SP7 является текущим (также с 2005 года).
  • MSXML5
    был выпущен только как часть MS-Office. В настоящее время поддерживается Microsoft, но только как часть Office, а не для создания приложений. Не создавайте приложения, зависящие от MSXML5: Verboten.
  • MSXML4
    первоначально отправлен? В настоящее время в режиме обслуживания. Microsoft поощряет людей отходить от MSXML4 до MSXML6. В настоящее время поддерживается, если вы находитесь на MSXML4SP2 или более поздней версии, которые были отправлены в 2003 году. Загрузите MSXML4SP2 здесь. Может быть redisributed.

Использование правильной версии MSXML в Internet Explorer является хорошей записью на в блоге от Microsoft xmlteam.

4b9b3361

Ответ 1

Если вам нужно поддерживать версии ОС Windows до Win2k, используйте MSXML3. В противном случае используйте MSXML6.

MSXML4 находится в режиме обслуживания.
MSXML5 никогда не поддерживался для использования за пределами MS-Office.

См:

Ответ 2

Я должен был принять такое же решение в своей работе пару лет назад.

MSDN заявляет, что версия 6 является оптимальной для использования, однако они не предоставляют модули слияния в SDK, а вы не разрешил распространять его в своем приложении, как вы могли, с версией 4. Версия 4 была заменена версией 6, а версия 5 была специально предназначена для MS Office. Версия 3 остается целевой версией на старых машинах.

То, что я закончил, заключалось в принятии грациозного подхода к деградации и попытке использовать 6 первых, не получив этой версии 4, а затем отказавшись от использования версии 3 (код С++):

inline bool CXMLDocument::CreateXMLDOMFactory(void)
{
    wxMutexLocker lock(sm_mXMLDOMFactory);

    if(!sm_pXMLDOMFactory)
    {
        ::CoGetClassObject(CLSID_DOMDocument60, CLSCTX_ALL, 0, IID_IClassFactory, reinterpret_cast<void **>(&sm_pXMLDOMFactory));
        if(!sm_pXMLDOMFactory)
        {
            ::CoGetClassObject(CLSID_DOMDocument40, CLSCTX_ALL, 0, IID_IClassFactory, reinterpret_cast<void **>(&sm_pXMLDOMFactory));
            if(!sm_pXMLDOMFactory)
                ::CoGetClassObject(CLSID_DOMDocument30, CLSCTX_ALL, 0, IID_IClassFactory, reinterpret_cast<void **>(&sm_pXMLDOMFactory));
        }
    }

    return sm_pXMLDOMFactory != 0;
}

Мы заметили измеримые улучшения производительности после перехода на версию 6 с версии 4, хотя вам нужно явно установить свойство NewParser в документе, чтобы получить это преимущество, например:

pDocument->setProperty(_bstr_t(L"NewParser"), VARIANT_TRUE);

Было также несколько дополнительных обручей, которые можно было загрузить при загрузке документов из-за соображений безопасности, удаленных DTD и т.д. Опять же, это было сделано с помощью свойств в документе, поэтому стоит посмотреть свойства ProhibitDTD, UseInlineSchema, AllowXsltScript и ServerHTTPRequest в MSDN, чтобы узнать, применяются ли они к вашему использованию.

Ответ 4

Кажется, что MSXML 5 является единственной версией, способной подписывать цифровой формат XML. Сайт MS говорит, что даже MSXML 6 не может этого сделать, если вам нужна эта функция, кажется, что MSXML 5 - единственный способ пойти.

http://msdn.microsoft.com/en-us/library/ms761363(VS.85).aspx "В этом примере кода используются функции, которые были реализованы в MSXML 5.0 для приложений Microsoft Office. Цифровые подписи XML не поддерживается в MXSML 6.0 и более поздних версиях"

Ответ 5

Недавно я создал библиотеку JS, которая старательно деградировала от последней версии до самой старой. Я обнаружил, что MSXML 3.0 очень хорошо поддерживается в большинстве систем. Я хотел использовать v. 6.0, когда он был доступен, но он разбился на некоторые установки IE 8. Итак, мне пришлось изменить свой код, чтобы сначала попробовать v 3.0, а затем v 6.0, а затем v 2.0.