Quelle version de MSXML dois-je utiliser?

semble comme ceci serait une question commune, bien que je n'ai pas pu trouver sur ainsi.

quelle version de MSXML dois-je utiliser dans Mes applications, et plus important encore, Comment dois-je décider?

il y a MSXML3, 4, 5 et 6.

j'ai récemment posté un code dans appelant-wcf-service-by-vbscript qui utilisait MSXML v4. AnthonyWJones a posté que je ne devrais pas utiliser 4, mais à la place 3 ou 6, mais probablement 3. Certainement pas v5!

pourquoi? J'aimerais en savoir plus sur les critères de sélection de la version de MSXML à utiliser dans mes applications.

question Bonus : quelqu'un a-t-il un résumé des différences entre les différentes versions de MSXML au fil du temps?


résumé jusqu'à présent:

  • MSXML6

    Devrait être le premier choix. a été publié en 2006, et comprend le perf et les correctifs de conformité. Utilisez-le si vous le pouvez. Que c'est bon. Il n'y a pas de modules de fusion; pour regrouper L'exécution MSXML6 avec votre application, MS suggère d'empaqueter le fichier MSXML6 msi . MSXML6 est une mise à jour de MSXML3/4 mais ne les remplace pas, car il interrompt certaines fonctionnalités. Vous pouvez obtenir le MSI ici .
  • MSXML3

    Deuxième choix. Version la plus largement déployée. Initialement expédié en mars 2000. Activement maintenu, pas de nouvelles fonctionnalités. Actuellement pris en charge, si vous êtes sur SP5 (expédié en 2005) ou plus tard. SP7 est en cours (également à partir de 2005).
  • MSXML5

    a été libéré seulement dans le cadre de MS-Office. Actuellement pris en charge par Microsoft, mais seulement en tant que partie de Office, pas pour créer des applications. Ne construisez pas d'applications qui dépendent de MSXML5: Verboten.
  • MSXML4

    expédié? Actuellement en "mode maintenance". Microsoft encourage les gens à passer de MSXML4 à MSXML6. Actuellement pris en charge si vous êtes sur MSXML4SP2 ou plus tard, qui a expédié en 2003. télécharger MSXML4SP2 ici . peut être redistributé .

utiliser la bonne version de MSXML dans Internet Explorer est une bonne entrée sur le blog de Microsoft xmlteam .

44
demandé sur Community 2009-06-04 20:56:17

5 réponses

si vous devez prendre en charge les versions de Windows OS avant Win2k, utilisez MSXML3. Sinon, utilisez MSXML6.

MSXML4 est en mode maintenance.

MSXML5 n'a jamais été réellement supporté pour une utilisation en dehors de MS-Office.

voir:

22
répondu Shog9 2009-06-04 17:02:20

j'ai dû prendre la même décision dans mon travail il y a quelques années.

le MSDN indique que la version 6 est la meilleure à utiliser, cependant ils ne fournissent pas de modules de fusion dans le SDK et vous n'êtes pas autorisé à le distribuer dans votre application comme vous le pouviez avec la version 4. La Version 4 a été remplacée par la version 6 et la version 5 était spécifiquement pour MS Office. La Version 3 reste la version cible sur les anciennes machines.

ce que j'ai fini par faire était d'adopter une approche de dégradation gracieuse et de tenter d'utiliser 6 d'abord, à défaut de la version 4, puis à défaut d'utiliser la version 3 (code est 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;
}

nous avons remarqué des améliorations mesurables de la performance après le passage à la version 6 de la version 4, bien que vous ayez à définir explicitement la propriété NewParser sur le document pour obtenir cet avantage, par exemple:

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

il y avait aussi quelques cerceaux de plus à sautez à travers lors du chargement de documents en raison de considérations de sécurité, distant DTDs et ainsi de suite. Encore une fois, cela a été fait via les propriétés sur le document, il est donc intéressant de regarder ProhibitDTD , UseInlineSchema , AllowXsltScript et ServerHTTPRequest propriétés dans le MSDN pour voir si elles s'appliquent à votre usage.

11
répondu Phil Booth 2009-06-04 17:27:20

Voici une liste de toutes les versions . Il y a une discussion décente sur les différences sur Wikipedia .

2
répondu JP Alioto 2009-06-04 17:05:16

semble que MSXML 5 est la seule version capable de signer numériquement un XML. MS site dit que même MSXML 6 ne peut pas le faire donc, si vous avez besoin de cette fonctionnalité, semble que MSXML 5 est la seule façon d'aller.

http://msdn.microsoft.com/en-us/library/ms761363 (VS.85).aspx " cet exemple de code utilise des fonctionnalités qui ont été implémentées dans MSXML 5.0 pour les Applications Microsoft Office. les signatures numériques XML ne sont pas prises en charge dans MXSML 6.0 et versions ultérieures "

1
répondu WarmBooter 2010-03-22 17:18:07

j'ai récemment créé une bibliothèque JS qui a essayé de dégrader gracieusement de la dernière version à la plus ancienne. J'ai trouvé que MSXML 3.0 est très bien supporté sur la plupart des systèmes. J'avais voulu utiliser la version 6.0 lorsqu'elle était disponible, mais elle s'est cassée sur certaines installations de L'IE 8. Donc, j'ai dû changer mon code pour tenter v 3.0 abord, puis v 6.0 et puis v 2.0.

0
répondu Cerebrus 2009-06-04 17:04:59