首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我应该使用哪个版本的MSXML?

我应该使用哪个版本的MSXML?
EN

Stack Overflow用户
提问于 2009-06-04 16:56:17
回答 5查看 24.9K关注 0票数 49

这似乎是一个常见的问题,虽然我找不到它。

我应该在我的应用程序中使用哪个版本的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是从MSXML6 3/4升级而来的,但没有替换它们,因为它停止了一些特性。你可以得到MSI 这里
  • MSXML3 第二种选择。最广泛部署的版本。最初于2000年3月发运。积极维护,无新功能。当前支持,如果您在SP5上(在2005年发布)或更高版本。SP7是最新的(也是从2005年开始的)。
  • MSXML5 只作为MS的一部分发布。目前微软支持,但只作为Office的一部分,而不是用于构建应用程序。不要构建依赖于MSXML5的应用程序: Verboten。
  • MSXML4 最初运来的?目前处于“维护模式”。微软正在鼓励人们从MSXML4迁移到MSXML6。当前支持如果您是在MSXML4SP2或更高版本,这是在2003年发布。下载MSXML4SP2 这里可以重新分配

在中使用MSXML的正确版本微软xmlteam的博客上的一个很好的条目。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-06-04 17:02:20

如果您需要在Win2k之前支持Windows版本,那么请使用MSXML3。否则,使用MSXML6。

MSXML4处于维护模式。

实际上,在MSXML5之外从未支持使用MSXML5。

请参见:

  • Microsoft XML Parser (MSXML)版本列表
  • 在中使用MSXML的正确版本
票数 25
EN

Stack Overflow用户

发布于 2009-06-04 17:10:31

几年前我在工作中不得不做出同样的决定。

版本6是最适合使用的MSDN状态,但是它们没有在SDK中提供合并模块,并且您不能像在版本4中那样在应用程序中分发它。版本4被版本6所取代,版本5专门用于MS Office。第3版仍然是旧机器上的目标版本。

最后,我采取了一种优雅的降级方法,尝试首先使用6,然后失败使用版本3(代码是C++):

代码语言:javascript
复制
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;
}

我们注意到在从version 4迁移到version 6之后,性能得到了可测量的改进,尽管您必须显式地在文档上设置NewParser属性以获得这种好处,例如:

代码语言:javascript
复制
pDocument->setProperty(_bstr_t(L"NewParser"), VARIANT_TRUE);

由于安全性考虑、远程DTD等原因,在加载文档时还有几个环要跳过。同样,这是通过文档上的属性完成的,因此值得查找MSDN中的ProhibitDTDUseInlineSchemaAllowXsltScriptServerHTTPRequest属性,看看它们是否适用于您的使用。

票数 13
EN

Stack Overflow用户

发布于 2009-06-04 17:05:16

以下是所有版本的列表。对维基百科上的差异进行了一次体面的讨论。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/951804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档