<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=MSXML</id>
	<title>MSXML - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=MSXML"/>
	<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=MSXML&amp;action=history"/>
	<updated>2026-07-16T00:25:26Z</updated>
	<subtitle>在这个wiki上该页的修订历史</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://arolstar52-zhtest.hf.space/index.php?title=MSXML&amp;diff=624238&amp;oldid=prev</id>
		<title>imported&gt;Raymon090 来自 2025年12月7日 (日) 13:40</title>
		<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=MSXML&amp;diff=624238&amp;oldid=prev"/>
		<updated>2025-12-07T13:40:56Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;微软XML核心服务&amp;#039;&amp;#039;&amp;#039;（&amp;#039;&amp;#039;&amp;#039;MSXML&amp;#039;&amp;#039;&amp;#039;）提供了一组服务，使用户可以使用[[JScript]]、[[VBScript]]和其它微软的开发工具开发基于[[XML]]的本机应用程序。它支持XML 1.0、[[Document Object Model|DOM]]、[[Simple API for XML|SAX]]、[[XSL Transformations|XSLT]] 1.0，并提供了包括[[XSD]]和[[XDR Schema|XDR]]在内的[[XML schema]]、XMLHttpRequest、XPath、SOM（）等技术。&lt;br /&gt;
== 版本历史 ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;MSXML&amp;#039;&amp;#039;&amp;#039;是不同产品的合集。可从此处枚举各个版本：&amp;lt;ref&amp;gt;{{Cite web |title=XML 分析程序版本列表 - Microsoft XML |url=https://learn.microsoft.com/zh-cn/previous-versions/troubleshoot/msxml/list-of-xml-parser-versions |website=learn.microsoft.com |language=zh-cn |last=aartig13 |access-date=2025-12-07}}&amp;lt;/ref&amp;gt;  &lt;br /&gt;
=== 现行有效版本 ===&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;MSXML 6.0&amp;#039;&amp;#039;&amp;#039; MSXML6是最新版本。与MSXML3一起随[[Microsoft SQL Server 2005]]、[[Microsoft Visual Studio|Visual Studio 2005]]、[[.NET Framework 3.0]]、[[Windows Vista]]、[[Windows XP Service Pack 3]]发行。支持64位本地环境。版本6可以替代版本4&amp;lt;ref&amp;gt;{{Cite web |url=http://msdn.microsoft.com/en-us/library/jj152146(v=vs.85).aspx |title=MSDN：MSXML版本6可以替代版本4 |accessdate=2018-01-13 |archive-date=2018-01-13 |archive-url=https://web.archive.org/web/20180113204504/https://msdn.microsoft.com/en-us/library/jj152146(v=vs.85).aspx |dead-url=no }}&amp;lt;/ref&amp;gt;，但不能替代版本3。MSXML 6不支持[[Windows 9x]]。&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;MSXML 3.0&amp;#039;&amp;#039;&amp;#039;对应于msxml3.dll。MSXML 3.0 SP2随[[Windows XP]]、[[Internet Explorer]] 6.0与[[Microsoft Data Access Components|MDAC]] 2.7发行。Windows XP SP2包含MSXML 3.0 SP5，作为MDAC 2.81的一部分。Internet Explorer 版本[[Internet Explorer 6|6.0]]、[[Internet Explorer 7.0|7.0]]、[[Internet Explorer 8|8.0]]使用MSXML 3解析XML文档。MSXML 3.0 SP7是[[Windows 95]]支持的最高版本。Windows XP SP3包含MSXML 3.0 SP9。[[Windows Vista]]包含MSXML 3.0 SP10。&lt;br /&gt;
&lt;br /&gt;
=== 过时版本 ===&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;MSXML 5.0&amp;#039;&amp;#039;&amp;#039;随[[Microsoft Office]] 2003与[[Office 2007]]发布。Microsoft没有发布5.0的文档，因为MSXML 5仅为Office 2003与2007内部使用。[[Microsoft Office 2010|Office 2010]]不包含MSXML 5.0。&amp;lt;ref&amp;gt;{{Cite web |url=https://technet.microsoft.com/en-us/library/cc178954%28office.14%29.aspx#BKMK_WhatsRemoved |title=Office 2010: What&amp;#039;s removed: Office 2010 Resource Kit documentation on TechNet |accessdate=2018-01-13 |archive-date=2017-08-26 |archive-url=https://web.archive.org/web/20170826192415/https://technet.microsoft.com/en-us/library/cc178954%28office.14%29.aspx#BKMK_WhatsRemoved |dead-url=no }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;MSXML 4.0&amp;#039;&amp;#039;&amp;#039;随独立的、可下载的SDK发布，不能完全兼容版本3.0 。只有32位版本。MSXML 4.0 SP3是最高版本。&amp;lt;ref name=&amp;quot;MSXML4SP3&amp;quot;&amp;gt;{{Citation |title=MSXML 4.0 SP3 Release Notes |publisher=[[Microsoft]] |date=2009-09-29 |url=http://download.microsoft.com/download/A/2/D/A2D8587D-0027-4217-9DAD-38AFDB0A177E/MSXML4%20SP3%20RTM%20Release%20Note.htm |accessdate=2011-01-21 |archive-date=2020-08-06 |archive-url=https://web.archive.org/web/20200806185226/https://download.microsoft.com/download/A/2/D/A2D8587D-0027-4217-9DAD-38AFDB0A177E/MSXML4%20SP3%20RTM%20Release%20Note.htm |dead-url=no }}&amp;lt;/ref&amp;gt;并于2014年4月过期。&amp;lt;ref name=&amp;quot;MSXML4SP3SupportLifeCycle&amp;quot;&amp;gt;{{Citation |title=MSXML Roadmap |publisher=[[Microsoft]] |date=2013-03-15 |url=https://msdn.microsoft.com/en-us/library/jj152146(v=vs.85).aspx |accessdate=2015-07-11 |archive-date=2018-01-13 |archive-url=https://web.archive.org/web/20180113204504/https://msdn.microsoft.com/en-us/library/jj152146(v=vs.85).aspx |dead-url=no }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;MSXML 2.6&amp;#039;&amp;#039;&amp;#039;随[[Microsoft SQL Server]] 2000与MDAC 2.6发布，对应于msxml2.dll，最后版本为 [http://support.microsoft.com/kb/887606 KB887606] {{Wayback|url=http://support.microsoft.com/kb/887606 |date=20150219143919 }}.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;MSXML 2.5&amp;#039;&amp;#039;&amp;#039;随[[Windows 2000]]中的[[Internet Explorer]] 5.01 与[[Microsoft Data Access Components|MDAC]] 2.5发布。对应于msxml.dll&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;MSXML 2.0a&amp;#039;&amp;#039;&amp;#039;随[[Internet Explorer 5.0]]发布&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;MSXML 1.0&amp;#039;&amp;#039;&amp;#039;随[[Internet Explorer 4|Internet Explorer 4.0]]发布&lt;br /&gt;
&lt;br /&gt;
==DOM==&lt;br /&gt;
MSXML以COM接口（Interface）的形式提供了一套XML的分析器（parser），从而实现了DOM。&lt;br /&gt;
&lt;br /&gt;
常用的接口：&lt;br /&gt;
===IXMLDOMDocument===&lt;br /&gt;
IXMLDOMDocument是XML文档接口，是DOM树结构的根结点。&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
//声明并创建一个IXMLDOMDocument的智能指针：&lt;br /&gt;
MSXML2::IXMLDOMDocumentPtr pXmlDoc;&lt;br /&gt;
HRESULT hr = pXmlDoc.CreateInstance( __uuidof(MSXML2::DOMDocument60), NULL, CLSCTX_INPROC_SERVER);&lt;br /&gt;
if( FAILED(hr))&lt;br /&gt;
        printf(&amp;quot;Failed to create DOM document interface pointer.\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
//加载xml文件代码为： &lt;br /&gt;
try&lt;br /&gt;
{&lt;br /&gt;
        pXmlDoc-&amp;gt;async = VARIANT_FALSE; // 使用阻塞式同步加载xml文件。默认是异步方式加载，还需要检查IXMLDOMDocument的ReadyState，这特别适用于从网络上加载。 &lt;br /&gt;
        pXmlDoc-&amp;gt;validateOnParse = VARIANT_FALSE;//加载xml文件时，是否依据xml文件中指明的DTD或schema检查xml文件的结构&lt;br /&gt;
        pXmlDoc-&amp;gt;resolveExternals = VARIANT_FALSE;//分析xml时，外部定义或ocument type definition(DTD)等不被处理&lt;br /&gt;
        if( pXmlDoc-&amp;gt;load(&amp;quot;test.xml&amp;quot;) != VARIANT_TRUE)&lt;br /&gt;
        {&lt;br /&gt;
            printf(&amp;quot;Fail reason: %s\n&amp;quot;, (LPCSTR)pXmlDoc-&amp;gt;parseError-&amp;gt;Getreason());&lt;br /&gt;
       }&lt;br /&gt;
       else&lt;br /&gt;
       {&lt;br /&gt;
            // success&lt;br /&gt;
       }&lt;br /&gt;
}&lt;br /&gt;
catch(_com_error errorObject)&lt;br /&gt;
{&lt;br /&gt;
        printf(&amp;quot;Exception, HRESULT = 0x%08x&amp;quot;, errorObject.Error());&lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
//保存xml文件：&lt;br /&gt;
try&lt;br /&gt;
{   &lt;br /&gt;
        if( FAILED( pXmlDoc-&amp;gt;save(L&amp;quot;myData.xml&amp;quot;)))&lt;br /&gt;
        {&lt;br /&gt;
              printf(&amp;quot;Fail reason: %s\n&amp;quot;, (LPCSTR)pXmlDoc-&amp;gt;parseError-&amp;gt;Getreason());&lt;br /&gt;
         }&lt;br /&gt;
         else&lt;br /&gt;
         { &lt;br /&gt;
             // success&lt;br /&gt;
          }&lt;br /&gt;
}&lt;br /&gt;
catch(_com_error errorObject)&lt;br /&gt;
{&lt;br /&gt;
          printf(&amp;quot;Exception, HRESULT = 0x%08x&amp;quot;, errorObject.Error());&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
===IXMLDOMNode===&lt;br /&gt;
IXMLDOMNode是通用的节点接口，各种类型节点接口都从它派生，包括IXMLDOMDocument。节点类型包括：&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 节点类型 !! 示例&lt;br /&gt;
|-&lt;br /&gt;
| NODE_ELEMENT || &amp;lt;&amp;#039;&amp;#039;&amp;#039;artist&amp;#039;&amp;#039;&amp;#039; type=&amp;quot;band&amp;quot;&amp;gt;The Offspring&amp;lt;&amp;#039;&amp;#039;&amp;#039;/artist&amp;#039;&amp;#039;&amp;#039;&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| NODE_ATTRIBUTE|| &amp;#039;&amp;#039;&amp;#039;type=&amp;quot;band&amp;quot;&amp;#039;&amp;#039;&amp;#039;&amp;gt;The Offspring&lt;br /&gt;
|-&lt;br /&gt;
| NODE_TEXT || &amp;#039;&amp;#039;&amp;#039;The Offspring&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| NODE_CDATA_SECTION || 示例&lt;br /&gt;
|-&lt;br /&gt;
| NODE_ENTITY_REFERENCE || 示例&lt;br /&gt;
|-&lt;br /&gt;
| NODE_ENTITY || 示例&lt;br /&gt;
|-&lt;br /&gt;
| NODE_PROCESSING_INSTRUCTION || &amp;lt;&amp;#039;&amp;#039;&amp;#039;?xml version=&amp;quot;1.0&amp;quot;?&amp;#039;&amp;#039;&amp;#039;&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| NODE_COMMENT || 示例&lt;br /&gt;
|-&lt;br /&gt;
| NODE_DOCUMENT || 示例&lt;br /&gt;
|-&lt;br /&gt;
| NODE_DOCUMENT_TYPE || &amp;lt;&amp;#039;&amp;#039;&amp;#039;!DOCTYPE compactdiscs SYSTEM &amp;quot;cds.dtd&amp;quot;&amp;#039;&amp;#039;&amp;#039;&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| NODE_DOCUMENT_FRAGMENT || 示例&lt;br /&gt;
|-&lt;br /&gt;
| NODE_NOTATION || 示例&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
获取根节点的一种方法：&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
MSXML2::IXMLDOMNodePtr pRootNode, pTempNode;&lt;br /&gt;
pXmlDoc-&amp;gt;get_firstChild(&amp;amp;pRootNode);&lt;br /&gt;
while( pRootNode)&lt;br /&gt;
{&lt;br /&gt;
         MSXML2::DOMNodeType type;&lt;br /&gt;
         pRootNode-&amp;gt;get_nodeType(&amp;amp;type);&lt;br /&gt;
         if(type==NODE_ELEMENT)  // 如果是element节点，而不是注释、回车符等&lt;br /&gt;
              break;                            //找到了根节点&lt;br /&gt;
         pTempNode = pRootNode;&lt;br /&gt;
         pTempNode-&amp;gt;get_nextSibling(&amp;amp;pRootNode);&lt;br /&gt;
}  &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
===IXMLDOMNodeList===&lt;br /&gt;
IXMLDOMNodeList是节点列表的接口，表示一组兄弟（sibling）节点的列表。可以通过index从0开始遍历列表。列表中的元素还是动态的，会随着XML文档的改变而更新。&lt;br /&gt;
===IXMLDOMNamedNodeMap===&lt;br /&gt;
IXMLDOMNamedNodeMap是命名节点的无序集合的接口。该接口常用于表示节点的属性集，并且是动态的。&lt;br /&gt;
===IXMLDOMElement===&lt;br /&gt;
IXMLDOMElement是元素的接口，一般用来表示一个节点及其属性。&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
//获取文档根节点的方法一：&lt;br /&gt;
MSXML2::IXMLDOMElementPtr pRootNode = pXmlDoc-&amp;gt;documentElement;&lt;br /&gt;
//获取文档根节点的方法二：&lt;br /&gt;
MSXML2::IXMLDOMElementPtr pRootNode2;&lt;br /&gt;
pXmlDoc-&amp;gt;get_documentElement(&amp;amp;pRootNode2);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
===IXMLDOMAttribute===&lt;br /&gt;
IXMLDOMAttribute是节点属性的接口。&lt;br /&gt;
===IXMLDOMText===&lt;br /&gt;
IXMLDOMText是节点的文本的接口。&lt;br /&gt;
===IXMLDOMComment===&lt;br /&gt;
IXMLDOMComment是XML文档的注释的接口。&lt;br /&gt;
===IXMLDOMParseError===&lt;br /&gt;
IXMLDOMParseError是XML分析时语法出错的接口，包括了错误的详细信息。&lt;br /&gt;
===IXMLDOMImplementation===&lt;br /&gt;
===IXMLDOMCharacterData===&lt;br /&gt;
IXMLDOMCharacterData是字符数据的接口。也是一批基于字符的接口的基类。&lt;br /&gt;
===IXMLDOMCDATASection===&lt;br /&gt;
IXMLDOMCDATASection是CDATA类型的文本的接口。&lt;br /&gt;
===IXMLDOMDocumentFragment===&lt;br /&gt;
===IXMLDOMDocumentType===&lt;br /&gt;
===IXMLDOMProcessingInstruction===&lt;br /&gt;
===IXMLDOMNotation===&lt;br /&gt;
===IXMLDOMEntity===&lt;br /&gt;
===IXMLDOMEntityRefernce===&lt;br /&gt;
===各种智能指针===&lt;br /&gt;
DOM的各种接口一般都有相应的智能指针接口，通常为接口名加上Ptr。例如IXMLDOMDocument的智能指针接口为IXMLDOMDocumentPtr。 &lt;br /&gt;
==C++语言使用==&lt;br /&gt;
需要在源程序中加入这行：&amp;lt;syntaxhighlight lang=&amp;quot;C++&amp;quot;&amp;gt;&lt;br /&gt;
#import &amp;lt;msxml6.dll&amp;gt; raw_interfaces_only&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
这使得在工程（Project）的编译文件夹下生成msxml6.tlh和msxml6.tli两个文件，分别相当于COM接口的头文件与实现文件。“raw_interfaces_only”属性使得生成的msxml6.tlh中，各个结构中只包含返回类型为HRESULT的接口函数，并且接口函数名省去了raw_前缀；如果不用该属性，则默认是在各个结构中声明了一套带raw_前缀的返回HRESULT类型的接口函数以及不带raw_前缀的返回各种VARIANT_类型的wrapper接口函数。&lt;br /&gt;
&lt;br /&gt;
也可以通过连接输入库文件msxml6.lib来使用。&lt;br /&gt;
&lt;br /&gt;
作为COM库，在线程的开头与结束之处需要分别调用COM环境的初始化与去初始化函数：CoInitialize、CoUninitialize。&lt;br /&gt;
&lt;br /&gt;
MSXML的各种资源都放在了MSXML2名字空间（namespace）中。&lt;br /&gt;
==Visual Basic使用==&lt;br /&gt;
首先在Visual Basic的Project上打开Add Reference对话框，在COM标签页（tab）中，增加“Microsoft, v6.0”的引用。也可以选择4.0或5.0版本的引用。&amp;lt;ref&amp;gt;{{Cite web |url=https://msdn.microsoft.com/library/aa468547 |title=MSDN:A Beginner&amp;#039;s Guide to the XML DOM |accessdate=2015-12-02 |archive-date=2015-12-09 |archive-url=https://web.archive.org/web/20151209072903/https://msdn.microsoft.com/library/aa468547 |dead-url=no }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
然后，在源代码中输入：&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;basic&amp;quot;&amp;gt;&lt;br /&gt;
Dim xDoc As MSXML.DOMDocument &lt;br /&gt;
Set xDoc = New MSXML.DOMDocument&lt;br /&gt;
&lt;br /&gt;
&amp;#039;If xDoc.Load(&amp;quot;http://www.develop.com/hp/brianr/cds.xml&amp;quot;) Then&lt;br /&gt;
If xDoc.Load(&amp;quot;C:\My Documents\cds.xml&amp;quot;) Then&lt;br /&gt;
   &amp;#039; The document loaded successfully.&lt;br /&gt;
   &amp;#039; Now do something intersting.&lt;br /&gt;
Else&lt;br /&gt;
    &amp;#039; The document failed to load.&lt;br /&gt;
   Dim strErrText As String&lt;br /&gt;
   Dim xPE As MSXML.IXMLDOMParseError&lt;br /&gt;
   &amp;#039; Obtain the ParseError object&lt;br /&gt;
   Set xPE = xDoc.parseError&lt;br /&gt;
   With xPE&lt;br /&gt;
      strErrText = &amp;quot;Your XML Document failed to load&amp;quot; &amp;amp; _&lt;br /&gt;
        &amp;quot;due the following error.&amp;quot; &amp;amp; vbCrLf &amp;amp; _&lt;br /&gt;
        &amp;quot;Error #: &amp;quot; &amp;amp; .errorCode &amp;amp; &amp;quot;: &amp;quot; &amp;amp; .reason &amp;amp; _&lt;br /&gt;
        &amp;quot;Line #: &amp;quot; &amp;amp; .Line &amp;amp; vbCrLf &amp;amp; _&lt;br /&gt;
        &amp;quot;Line Position: &amp;quot; &amp;amp; .linepos &amp;amp; vbCrLf &amp;amp; _&lt;br /&gt;
        &amp;quot;Position In File: &amp;quot; &amp;amp; .filepos &amp;amp; vbCrLf &amp;amp; _&lt;br /&gt;
        &amp;quot;Source Text: &amp;quot; &amp;amp; .srcText &amp;amp; vbCrLf &amp;amp; _&lt;br /&gt;
        &amp;quot;Document URL: &amp;quot; &amp;amp; .url&lt;br /&gt;
    End With&lt;br /&gt;
&lt;br /&gt;
    MsgBox strErrText, vbExclamation&lt;br /&gt;
&lt;br /&gt;
End If&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Set xDoc = Nothing&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==VBScript使用==&lt;br /&gt;
 Set objParser = CreateObject( &amp;quot;Microsoft.XMLDOM&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
==参考文献==&lt;br /&gt;
*[http://blogs.msdn.com/b/xmlteam/ MSDN:Microsoft XML Team Blog] {{Wayback|url=http://blogs.msdn.com/b/xmlteam/ |date=20160307071246 }}&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Microsoft APIs}}&lt;br /&gt;
{{Internet Explorer}}&lt;br /&gt;
[[Category:微軟API]]&lt;br /&gt;
[[Category:XML]]&lt;br /&gt;
[[Category:Internet Explorer]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Raymon090</name></author>
	</entry>
</feed>