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

似乎这将是一个常见的问题,虽然我无法find它。

应该在我的应用程序中使用哪个版本的MSXML,更重要的是,我应该如何决定?

有MSXML3,4,5和6。

我最近在使用MSXML v4的调用-wcf-service-by-vbscript中发布了一些代码。 AnthonyWJones发布说,我不应该使用4,而是3或6,但可能是3.当然不是v5!

为什么? 我想知道更多关于select要在我的应用程序中使用的MSXML版本的条件。

奖金问题 :有没有人有不同版本的MSXML之间的差异总结?


总结到目前为止:

  • MSXML6
    应该是第一select。 于2006年发布,包括性能和合规性修复。 如果可以的话,使用这个。 这很好。 没有合并模块; 要将MSXML6运行时与您的应用程序捆绑在一起, MSbuild议打包MSXML6 msi文件 。 MSXML6是MSXML3 / 4的升级版本,但不能替代它们,因为它会停用某些function。 你可以在这里得到MSI。
  • MSXML3
    第二select。 最广泛部署的版本。 最初在2000年3月发货。积极维护,没有新的function。 目前支持,如果你在SP5 (2005年出货)或更高版本。 目前SP7也是从2005年开始的。
  • MSXML5
    仅作为MS-Office的一部分发布。 目前由Microsoft支持,但仅作为Office的一部分,而不是用于构build应用程序。 不要构build依赖于MSXML5的应用程序:Verboten。
  • MSXML4
    最初发货? 目前处于“维护模式”。 微软鼓励人们将MSXML4移到MSXML6。 目前支持,如果您在MSXML4SP2或更高版本,2003年出货。下载MSXML4SP2 在这里 。 可以重新分配 。

在Internet Explorer中使用正确版本的MSXML是微软xmlteam的博客上的一个不错的入口。

如果您需要在Win2k之前支持Windows操作系统版本,请使用MSXML3。 否则,使用MSXML6。

MSXML4处于维护模式。
在MS-Office之外,MSXML5实际上从未得到实际的支持。

看到:

  • Microsoft XML Parser(MSXML)版本的列表
  • 在Internet Explorer中使用正确版本的MSXML

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

MSDN指出版本6是最佳的版本,但是它们不提供SDK中的合并模块,也不允许像版本4那样在应用程序中分发它。版本4被版本6取代,版本5专门用于MS Office。 版本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; } 

从版本4转到版本6之后,我们注意到了可衡量的性能改进,但是您必须在文档上明确设置NewParser属性才能获得此益处,例如:

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

由于安全考虑,远程DTD等,加载文档时还有更多的麻烦。 同样,这是通过文档上的属性完成的,所以值得在MSDN中查找ProhibitDTDUseInlineSchemaAllowXsltScriptServerHTTPRequest属性,看它们是否适用于您的使用。

这是所有版本的列表 。 维基百科上的差异有一个体面的讨论。

似乎MSXML 5是唯一能够对XML进行数字签名的版本。 MS站点说,即使MSXML 6不能这样做,如果你需要这个function,似乎MSXML 5是唯一的出路。

http://msdn.microsoft.com/en-us/library/ms761363(VS.85).aspx “此示例代码使用MSXML 5.0中为Microsoft Office应用程序实现的function。MXSML 6.0中不支持XML数字签名后来

我最近创build了一个JS库,试图从最新版本到最老版本进行优雅的降级。 我发现MSXML 3.0在大多数系统上得到很好的支持。 我曾经想要使用6.0版本,但是在一些IE8上安装的时候打破了。 所以,我不得不改变我的代码先尝试v 3.0,然后v 6.0,然后v 2.0。