windows - Hvilken version af MSXML skal jeg bruge?

Indlæg af Hanne Mølgaard Plasc

Problem



Det ser ud til at være et fælles spørgsmål, selv om jeg ikke kunne finde det på så.


Hvilken version af MSXML skal jeg bruge i mine applikationer, og vigtigere, hvordan skal jeg beslutte?


Der er MSXML3, 4, 5 og 6.


Jeg har for nylig sendt en kode i calling-wcf-service-by-vbscript, der brugte MSXML v4. AnthonyWJones skrev, at jeg ikke skulle bruge 4, men i stedet 3 eller 6, men sandsynligvis 3. Absolut ikke v5!


Hvorfor? Jeg vil gerne vide mere om kriterierne for valg af versionen af ​​MSXML til brug i mine apps.


Bonus spørgsmål : Har nogen en oversigt over forskellene mellem de forskellige versioner af MSXML over tid?





Sammenfattende hidtil:



  • MSXML6

    Skal være første valg. blev udgivet i 2006, og omfatter perf og compliance regler. Brug dette, hvis du kan. Det er godt. Der er ingen fusionsmoduler, for at bundle MSXML6 runtime med din app foreslår MS at pakke MSXML6 msi-filen. MSXML6 er en opgradering fra MSXML3/4, men erstatter ikke dem, fordi det afbryder nogle funktioner. få MSI her.

  • MSXML3

    Andet valg. Den mest udbredte version. Leveres oprindeligt i marts 2000. Aktivt vedligeholdt, ingen nye funktioner. For øjeblikket understøttes, hvis du er på SP5 (afsendt i 2005) eller senere. SP7 er aktuelt (også fra 2005).

  • MSXML5

    blev kun udgivet som en del af MS-Office. I øjeblikket understøttes af Microsoft, men kun som en del af Office, ikke til opbygning af apps. Du må ikke bygge apps, der er afhængige af MSXML5: Verboten.

  • Msxml4

    oprindeligt afsendt? I øjeblikket i 'vedligeholdelsestilstand'. Microsoft opfordrer folk til at flytte MSXML4 til MSXML6. For øjeblikket understøttes, hvis du er på MSXML4SP2 eller senere, som blev sendt i 2003. Download MSXML4SP2 her. Kan omfordeles.



Brug af den rigtige version af MSXML i Internet Explorer er en god indgang på bloggen fra Microsoft 's xmlteam. [9] [10] [11] [12] [13] [14] [15] [16]

Bedste reference


Hvis du har brug for at understøtte Windows OS-versioner før Win2k, skal du bruge MSXML3. Ellers skal du bruge MSXML6.


MSXML4 er i vedligeholdelsestilstand.

MSXML5 blev aldrig rent faktisk understøttet til brug uden for MS-Office.


Se:




  • Liste over Microsoft XML Parser-versioner (MSXML)

  • Brug af den rigtige version af MSXML i Internet Explorer


Andre referencer 1


Jeg var nødt til at træffe den samme beslutning i mit arbejde for et par år siden. [17] [18]


MSDN angiver, at version 6 er den optimale, der skal bruges, men de giver ikke fusionsmoduler i SDK'en, og du må ikke distribuere den i din ansøgning, som du kunne med version 4. Version 4 blev superceded af version 6 og version 5 var specifikt til MS Office. Version 3 forbliver målversionen på ældre maskiner. [19]


Hvad jeg endte med at gøre var at tage en graceful nedbrydning tilgang og forsøger at bruge 6 først, undlader den version 4, så fejler den brug version 3 (kode er 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;
}


Vi har bemærket målbare præstationsforbedringer efter at have flyttet til version 6 fra version 4, selvom du skal eksplicit indstille NewParser egenskaben på dokumentet for at få denne fordel, f.eks .:


pDocument->setProperty(\_bstr\_t(L"NewParser"), VARIANT\_TRUE);


Der var også et par flere hoops at springe igennem, når du lægger dokumenter på grund af sikkerhedshensyn, fjerntliggende DTD'er og så videre. Igen blev dette gjort via egenskaber på dokumentet, så det er værd at kigge på egenskaberne ProhibitDTD, UseInlineSchema, AllowXsltScript og ServerHTTPRequest i MSDN for at se om de gælder til din brug.

Andre referencer 2


Her er en liste over alle versioner. Der er en anstændig diskussion af forskellene på Wikipedia. [20] [21]

Andre referencer 3


Synes, at MSXML 5 er den eneste version, der er i stand til at signere digitalt en XML. MS site siger, at selv MSXML 6 ikke kan gøre det, hvis du har brug for denne funktion, synes MSXML 5 at være den eneste vej at gå.


http://msdn.microsoft.com/en-us/library/ms761363(VS.85).aspx 'Denne prøvekode bruger funktioner, der blev implementeret i MSXML 5.0 til Microsoft Office-programmer. XML digitale signaturer understøttes ikke i MXSML 6.0 og senere '[22]

Andre referencer 4


Jeg har for nylig oprettet et JS-bibliotek, der forsøgte at nedbryde graciøst fra den nyeste version til den ældste. Jeg fandt ud af, at MSXML 3.0 understøttes meget godt på de fleste systemer. Jeg havde ønsket at bruge v. 6.0, når det var tilgængeligt, men det brød på nogle IE 8-installationer. Så jeg måtte ændre min kode for at prøve v 3.0 først og derefter v 6,0 og derefter v 2,0.