48 votes

Quelle version de MSXML dois-je utiliser?

Semble que ce serait une question commune, bien que je ne pouvais pas le trouver sur DONC.

La version de MSXML dois-je utiliser dans mes applications, et plus important encore, comment devrais-je choisir?

Il est MSXML3, 4, 5 et 6.

J'ai posté le code d'appel de la wcf service par vbscript qui ont utilisé MSXML v4. AnthonyWJones posté que je ne devrais pas utiliser 4, mais au lieu de 3 ou 6, mais probablement 3. Certainement pas la 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: est-ce que quelqu'un a 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 les perf et la conformité des correctifs. Utilisez-le si vous le pouvez. Que c'est bon. Il n'y a pas de modules de fusion; de regroupement de la MSXML6 d'exécution de votre application, MS suggère l'emballage de la MSXML6 fichier msi. MSXML6 est une mise à niveau à partir de MSXML3/4 mais ne les remplace pas, parce qu'il se désiste de certaines fonctionnalités. Vous pouvez obtenir le MSI ici.
  • MSXML3
    Deuxième choix. Plus largement déployé la version. À l'origine, livré en Mars 2000. Activement maintenu, pas de nouvelles fonctionnalités. Actuellement pris en charge, si vous êtes sur 5 (livré en 2005) ou plus tard. SP7 est en cours (également à partir de 2005).
  • MSXML5
    n'a été publiée que dans le cadre de MS-Office. Actuellement pris en charge par Microsoft, mais uniquement dans le cadre de l'Office, et non pas pour la création d'applications. Ne pas construire des applications qui dépendent de MSXML5: Verboten.
  • MSXML4
    expédié? Actuellement en "mode maintenance". Microsoft encourage les gens à se déplacer hors MSXML4 à MSXML6. Actuellement pris en charge si vous êtes sur MSXML4SP2 ou plus tard, livré en 2003. télécharger MSXML4SP2 ici. Peut être redisributed.

À l'aide de la version de MSXML dans Internet Explorer est un bon point d'entrée sur le blog de Microsoft xmlteam.

24voto

Shog9 Points 82052

Si vous avez besoin de support de Windows OS versions antérieures à Win2k, puis utilisez MSXML3. Sinon, utilisez MSXML6.

MSXML4 est en mode de maintenance.
MSXML5 n'a jamais été réellement pris en charge pour une utilisation en dehors de MS-Office.

Voir:

12voto

Phil Booth Points 2766

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

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

Ce que j'ai fait était de prendre une dégradation progressive de l'approche et de la tentative d'utiliser les 6 premiers, à défaut de la version 4, puis, à défaut, utiliser la version 3 (le code est en 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 de performances mesurables après le passage à la version 6 à partir de la version 4, même si vous devez définir explicitement l' NewParser de la propriété sur le document pour obtenir cet avantage, par exemple:

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

Il y avait aussi un couple de plus à sauter à travers des cerceaux lors du chargement de documents en raison de considérations de sécurité, Dtd à distance, et ainsi de suite. Encore une fois, cela a été fait via les propriétés du document, de sorte qu'il vaut la peine de regarder le ProhibitDTD, UseInlineSchema, AllowXsltScript et ServerHTTPRequest propriétés dans la MSDN pour voir si elles s'appliquent à votre utilisation.

2voto

JP Alioto Points 33482

1voto

WarmBooter Points 811

Semble que MSXML 5 est la seule version en mesure de signer numériquement un document XML. MME site dit que même MSXML 6 ne pouvez pas faire cela, 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(SV.85).aspx " Cet exemple de code utilise des fonctionnalités qui ont été mises en œuvre dans MSXML 5.0 pour les Applications Microsoft Office. Signatures numériques XML ne sont pas pris en charge dans MXSML 6.0 et plus tard"

0voto

Cerebrus Points 18045

J'ai récemment créé une bibliothèque JS qui tentait de passer progressivement de la version la plus ancienne à la version la plus ancienne. J'ai constaté que MSXML 3.0 est très bien pris en charge sur la plupart des systèmes. J'avais envie d'utiliser la version 6.0 lorsqu'elle était disponible, mais certaines installations d'Internet Explorer 8 fonctionnaient mal. J'ai donc dû changer mon code pour essayer d'abord la version 3.0, puis les versions 6.0 et 2.0.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X