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

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

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

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

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

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

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


резюме до сих пор:

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

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

5 ответов


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

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

посмотреть:


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

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

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

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);

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


вот список всех версий. Существует достойное обсуждение различия в Википедии.


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

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


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