سؤال

يبدو أن هذا سيكون سؤالا شائعا، على الرغم من أنني لم أتمكن من العثور عليه كذلك.

أي إصدار من MSXML يجب أن أستخدمه في تطبيقاتي، والأهم من ذلك، كيف يجب أن أقرر؟

هناك MSXML3 و 4 و 5 و 6.

لقد نشرت مؤخرا بعض الكود في استدعاء WCF-Service-By-VBScript التي تستخدم MSXML V4. نشر Anthonywjones أنه لا ينبغي لي استخدام 4، ولكن بدلا من ذلك 3 أو 6، ولكن ربما 3. بالتأكيد ليس V5!

لماذا ا؟ أود معرفة المزيد عن المعايير اللازمة لتحديد إصدار MSXML لاستخدامها في تطبيقاتي.

السؤال مكافأة: هل لدى أي شخص ملخصا للفروق بين الإصدارات المختلفة من MSXML مع مرور الوقت؟


ملخص حتى الآن:

  • MSXML6.
    يجب أن يكون الخيار الأول. تم إصداره في عام 2006، ويشمل إصلاحات Perf والامتثال. استخدم هذا إذا استطعت. هذا جيد. لا توجد وحدات دمج؛ لحزم وقت تشغيل MSXML6 مع التطبيق الخاص بك، تشير MS إلى التعبئة والتغليف ملف MSXML6 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 هنا. يمكن إعادة ترتيب.

باستخدام الإصدار الصحيح من MSXML في Internet Explorer هو دخول جيد بلوق من xmlteam من Microsoft.

هل كانت مفيدة؟

المحلول

إذا كنت بحاجة إلى دعم إصدارات نظام التشغيل Windows قبل WIN2K، ثم استخدم MSXML3. خلاف ذلك، استخدم MSXML6.

MSXML4 في وضع الصيانة.
لم يتم دعم MSXML5 في الواقع للاستخدام خارج MS-Office.

يرى:

نصائح أخرى

اضطررت إلى اتخاذ نفس القرار في عملي قبل بضع سنوات.

ال MSDN الدول هذا الإصدار 6 هو الشخص الأمثل الذي يستخدمه، ومع ذلك، فلا تقدم وحدات دمج في SDK ولا يسمح لك بتوزيعه في طلبك كما يمكنك بالإصدار 4. تم استخدام الإصدار 4 بواسطة الإصدار 6 والإصدار 5 خصيصا لمكتب MS. يظل الإصدار 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.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top