背景
我有一个使用Microsoft提供的功能的现有代码,用于通过HTTP发布XML数据。具体来说,来自msxml4.dll(COM)的IServerXMLHTTPRequest(包含在MSXML3及更高版本中)。
问题:
在可能的情况下,如果客户端工作站上的MSXML4.DLL 缺失,则所描述的POST操作将只是失败。 More information about MSXML versions
当前代码:
#import "msxml4.dll"
using namespace MSXML2;
…
IServerXMLHTTPRequestPtr spIXMLHTTPRequest = NULL;
hr = spIXMLHTTPRequest.CreateInstance(__uuidof(ServerXMLHTTP40));
备选方案:
问题:
将代码更改为 MSXML版本无关的最简单,最强大的方法是什么?也就是说,无论客户端计算机上实际安装的MSXML版本如何,都使用IServerXMLHTTPRequest。如果未安装任何版本的MSXML,请提示用户并正常退出。
需要其他信息吗?请告诉我
谢谢!
答案 0 :(得分:1)
来自MSDN:
MSXML 3.0版是MSXML的最后一个版本,支持与版本无关的GUID和ProgID。从4.0版开始,MSXML以并排模式安装在您的计算机上。这意味着,例如,为Microsoft Office应用程序安装MSXML 5.0不会替换计算机上任何以前安装的MSXML解析器版本。这样做是为了保护当前使用早期版本的MSXML的应用程序的质量。并行模式还允许您决定在代码中使用哪个版本的解析器。
这意味着没有安装COM类,您可以实例化,期望最新安装的版本将被选中,否则其他人将根据可用性或其他标准决定是否加载MSXML 4或6。
您应该使用特定版本并依赖于相应的运行时可用或安装。或者,您可以在代码as you already discovered中切换MSXML版本。