与XMLHTTP对象相关的名称

作者:iamlaosong

最近用VBA编程使用XMLHTTP对象网抓数据的时候,发现这个对象不同场合的名称有点不同。对这些名称做了一些了解,在了解过程中,还碰到一些相关的对象,这方面我了解的还不透彻,现在将对这些东西的一些理解记录于此。

1、所用的XMLHTTP对象是Microsoft XML v6.0,这是我看到的最高版本,当然还有低一点的版本,在引用中可以看到:

与XMLHTTP对象相关的名称

可以看出,对象在文件msxml6.dll中。

定义对象时,对象类型的名称是“MSXML2.XMLHTTP60”或者“XMLHTTP60”,即:

Dim xh As New XMLHTTP60

如果直接创建,则使用名称“MSXML2.XMLHTTP.6.0”,即:

    Dim xh As Object
    Set xh = CreateObject("MSXML2.XMLHTTP.6.0")

2、早期版本名称中上述名称中的前缀MSXML2是Microsoft,XMLHTTP后面无版本号

测试了一下,下面的写法也是可以的,只是不知道这种写法创建的对象到底是什么版本:

Set xh = CreateObject("Microsoft.XMLHTTP")

我想之所以现在的版本名称前缀写成MSXML2,是不是默认Microsoft就是MSXML1呢?

3、如果说XMLHTTP是辆车子的话,他负责将远程服务器上的东西取回来,那么XMLDOM对象就相当于拆包器,他负责解析取回来的内容。二者功能似乎有一部分重叠。

4、MSXML2.DOMDocument和Microsoft.XMLDOM有什么区别?
     答案:版本不同:Microsoft.XMLDOM一般为msxml2.6、2.5、3,MSXML2.DOMDocument为msxml3 或4,MSMXL4支持的标准比较多(譬如它支持W3C的XML Schema),对标准的Conformance也更好,XML分析器与XSLT处理器的效率也更高 。

这个答案有点过时了,我现在用的是6.0了(msxml6.dll)。XMLDOM虽然长得和XMLHTTP名称有点相似,但它是早期名称,现在的名称是DOMDocument,使用的时候Microsoft.XMLDOM不带版本号,而使用MSXML2.DOMDocument时则带有版本号,例如:

set xmlDom = CreateObject("MSXML2.DOMDocument.4.0") 


参见:MSXML2.XMLHTTP.4.0对象MSXML2.DOMDocument