(Translated by https://www.hiragana.jp/)
MSXML - 维基百科,自由的百科全书 とべ转到内容ないよう

MSXML

维基百科ひゃっか自由じゆうてき百科ひゃっかぜん

ほろ软XMLかく心服しんぷくMSXML提供ていきょうりょういち组服务,使用しよう户可以使用しようJScriptVBScriptかず其它ほろ软的开发工具こうぐ开发もとXMLてきほんつくえ应用ほどじょ。它支持しじXML 1.0、DOMSAXXSLT 1.0,并提供ていきょうりょう包括ほうかつXSDXDRざい内的ないてきXML schema、XMLHttpRequest、XPath、SOM()とうわざ术。

版本はんぽん历史

[编辑]

MSXML不同ふどう产品てきごうしゅう从此处枚举各个版本はんぽん[1]

现行有效ゆうこう版本はんぽん

[编辑]
  • MSXML 6.0 MSXML6最新さいしん版本はんぽんあずかMSXML3いちおこりずいMicrosoft SQL Server 2005Visual Studio 2005.NET Framework 3.0Windows VistaWindows XP Service Pack 3发行。支持しじ64本地ほんじ环境。版本はんぽん6以替だい版本はんぽん4[2]ただし不能ふのうがえだい版本はんぽん3。MSXML 6支持しじWindows 9x
  • MSXML 3.0对应于msxml3.dll。MSXML 3.0 SP2ずいWindows XPInternet Explorer 6.0あずかMDAC 2.7发行。Windows XP SP2包含ほうがんMSXML 3.0 SP5,さく为MDAC 2.81てきいち部分ぶぶん。Internet Explorer 版本はんぽん6.07.08.0使用しようMSXML 3解析かいせきXMLぶん档。MSXML 3.0 SP7Windows 95支持しじてき最高さいこう版本はんぽん。Windows XP SP3包含ほうがんMSXML 3.0 SP9。Windows Vista包含ほうがんMSXML 3.0 SP10。

过时版本はんぽん

[编辑]
  • MSXML 5.0ずいMicrosoft Office 2003あずかOffice 2007发布。Microsoftぼつゆう发布5.0てきぶん档,いん为MSXML 5仅为Office 2003あずか2007内部ないぶ使用しようOffice 2010包含ほうがんMSXML 5.0。[3]
  • MSXML 4.0ずい独立どくりつてきした载的SDK发布,不能ふのう完全かんぜんけんよう版本はんぽん3.0 。ただゆう32版本はんぽん。MSXML 4.0 SP3最高さいこう版本はんぽん[4]并于2014ねん4がつ过期。[5]
  • MSXML 2.6ずいMicrosoft SQL Server 2000あずかMDAC 2.6发布,对应于msxml2.dll,さいきさき版本はんぽんKB887606页面そん档备份そん互联网档あん).
  • MSXML 2.5ずいWindows 2000なかてきInternet Explorer 5.01 あずかMDAC 2.5发布。对应于msxml.dll
  • MSXML 2.0aずいInternet Explorer 5.0发布
  • MSXML 1.0ずいInternet Explorer 4.0发布

DOM

[编辑]

MSXML以COMせっこう(Interface)てき形式けいしき提供ていきょうりょういち套XMLてき分析ぶんせき(parser),从而实现りょうDOM。

常用じょうようてきせっこう

IXMLDOMDocument

[编辑]

IXMLDOMDocumentXMLぶん档接こうDOM树结构的结点。

//声明せいめい并创けんいち个IXMLDOMDocumentてき智能ちのうゆび针:
MSXML2::IXMLDOMDocumentPtr pXmlDoc;
HRESULT hr = pXmlDoc.CreateInstance( __uuidof(MSXML2::DOMDocument60), NULL, CLSCTX_INPROC_SERVER);
if( FAILED(hr))
        printf("Failed to create DOM document interface pointer.\n");

//载xmlぶんけんだい码为: 
try
{
        pXmlDoc->async = VARIANT_FALSE; // 使用しよう阻塞しきどう载xmlぶんけんだま认是异步方式ほうしき载,还需よう检查IXMLDOMDocumentてきReadyState,这特别适よう于从网络じょう载。 
        pXmlDoc->validateOnParse = VARIANT_FALSE;//载xmlぶんけん时,いなすえxmlぶんけん中指なかゆびあかりてきDTDあるschema检查xmlぶんけんてき结构
        pXmlDoc->resolveExternals = VARIANT_FALSE;//分析ぶんせきxml时,外部がいぶてい义或ocument type definition(DTD)とう处理
        if( pXmlDoc->load("test.xml") != VARIANT_TRUE)
        {
            printf("Fail reason: %s\n", (LPCSTR)pXmlDoc->parseError->Getreason());
       }
       else
       {
            // success
       }
}
catch(_com_error errorObject)
{
        printf("Exception, HRESULT = 0x%08x", errorObject.Error());
} 

//保存ほぞんxmlぶんけん
try
{   
        if( FAILED( pXmlDoc->save(L"myData.xml")))
        {
              printf("Fail reason: %s\n", (LPCSTR)pXmlDoc->parseError->Getreason());
         }
         else
         { 
             // success
          }
}
catch(_com_error errorObject)
{
          printf("Exception, HRESULT = 0x%08x", errorObject.Error());
}

IXMLDOMNode

[编辑]

IXMLDOMNode通用つうようてき节点せっこうかく种类がた节点せっこう从它派生はせい包括ほうかつIXMLDOMDocument。节点类型包括ほうかつ

节点类型 しめせれい
NODE_ELEMENT <artist type="band">The Offspring</artist>
NODE_ATTRIBUTE type="band">The Offspring
NODE_TEXT The Offspring
NODE_CDATA_SECTION しめせれい
NODE_ENTITY_REFERENCE しめせれい
NODE_ENTITY しめせれい
NODE_PROCESSING_INSTRUCTION <?xml version="1.0"?>
NODE_COMMENT しめせれい
NODE_DOCUMENT しめせれい
NODE_DOCUMENT_TYPE <!DOCTYPE compactdiscs SYSTEM "cds.dtd">
NODE_DOCUMENT_FRAGMENT しめせれい
NODE_NOTATION しめせれい

获取节点てきいち种方ほう

MSXML2::IXMLDOMNodePtr pRootNode, pTempNode;
pXmlDoc->get_firstChild(&pRootNode);
while( pRootNode)
{
         MSXML2::DOMNodeType type;
         pRootNode->get_nodeType(&type);
         if(type==NODE_ELEMENT)  // 如果element节点,而不ちゅう释、かい车符とう
              break;                            //找到りょう节点
         pTempNode = pRootNode;
         pTempNode->get_nextSibling(&pRootNode);
}

IXMLDOMNodeList

[编辑]

IXMLDOMNodeList节点れつひょうてきせっこう表示ひょうじいち兄弟きょうだい(sibling)节点てきれつひょう以通过index从0开始へん历列ひょうれつひょうちゅうてき元素げんそ还是动态てきかいずいXMLぶん档的あらため变而更新こうしん

IXMLDOMNamedNodeMap

[编辑]

IXMLDOMNamedNodeMap命名めいめい节点てき无序集合しゅうごうてきせっこう。该接こう常用じょうよう表示ひょうじ节点てき属性ぞくせいしゅう,并且动态てき

IXMLDOMElement

[编辑]

IXMLDOMElement元素げんそてきせっこう,一般用来表示一个节点及其属性。

//获取ぶん档根节点てき方法ほうほういち
MSXML2::IXMLDOMElementPtr pRootNode = pXmlDoc->documentElement;
//获取ぶん档根节点てき方法ほうほう
MSXML2::IXMLDOMElementPtr pRootNode2;
pXmlDoc->get_documentElement(&pRootNode2);

IXMLDOMAttribute

[编辑]

IXMLDOMAttribute节点属性ぞくせいてきせっこう

IXMLDOMText

[编辑]

IXMLDOMText节点てきぶんほんてきせっこう

IXMLDOMComment

[编辑]

IXMLDOMCommentXMLぶん档的ちゅう释的せっこう

IXMLDOMParseError

[编辑]

IXMLDOMParseErrorXML分析ぶんせき时语ほう错的せっこう包括ほうかつりょう错误てき详细しんいき

IXMLDOMImplementation

[编辑]

IXMLDOMCharacterData

[编辑]

IXMLDOMCharacterDataすうすえてきせっこう。也是一批基于字符的接口的基类。

IXMLDOMCDATASection

[编辑]

IXMLDOMCDATASectionCDATA类型てきぶんほんてきせっこう

IXMLDOMDocumentFragment

[编辑]

IXMLDOMDocumentType

[编辑]

IXMLDOMProcessingInstruction

[编辑]

IXMLDOMNotation

[编辑]

IXMLDOMEntity

[编辑]

IXMLDOMEntityRefernce

[编辑]

かく智能ちのうゆび

[编辑]

DOMてきかく种接こう一般都有相应的智能指针接口,通常つうじょう为接こうめいじょうPtr。れい如IXMLDOMDocumentてき智能ちのうゆび针接こう为IXMLDOMDocumentPtr。

C++语言使用しよう

[编辑]

需要じゅようざいみなもとほどじょちゅう加入かにゅう这行:

#import <msxml6.dll> raw_interfaces_only

这使とくざい工程こうてい(Project)てき编译ぶんけん夹下生成せいせいmsxml6.tlhmsxml6.tli两个ぶんけんふん别相とう于COMせっこうてき头文けんあずか实现ぶんけん。“raw_interfaces_only”属性ぞくせい使とく生成せいせいてきmsxml6.tlhちゅうかく个结构中ただ包含ほうがんかえしかい类型为HRESULTてきせっこう函数かんすう,并且せっこう函数かんすうめいはぶけりょうraw_ぜん缀;如果不用ふよう该属せい,则默认是ざいかく个结构中声明せいめいりょういち套带raw_ぜん缀的かえしかいHRESULT类型てきせっこう函数かんすう以及带raw_ぜん缀的かえしかいかく种VARIANT_类型てきwrapperせっこう函数かんすう

也可以通过连せっ输入库文けんmsxml6.libらい使用しよう

さく为COM库,ざい线程てき开头与结束需要じゅようぶん别调ようCOM环境てきはつはじめあずかはつはじめ函数かんすう:CoInitialize、CoUninitialize。

MSXMLてきかく种资みなもとざいりょうMSXML2名字みょうじそら间(namespace)ちゅう

Visual Basic使用しよう

[编辑]

くびさきざいVisual BasicてきProjectじょう开Add Reference对话かまちざいCOM标签页(tab)ちゅう增加ぞうか“Microsoft, v6.0”てき引用いんよう。也可以选择4.0ある5.0版本はんぽんてき引用いんよう[6]

しかきさきざいみなもとだい码中输入:

Dim xDoc As MSXML.DOMDocument 
Set xDoc = New MSXML.DOMDocument

'If xDoc.Load("http://www.develop.com/hp/brianr/cds.xml") Then
If xDoc.Load("C:\My Documents\cds.xml") Then
   ' The document loaded successfully.
   ' Now do something intersting.
Else
    ' The document failed to load.
   Dim strErrText As String
   Dim xPE As MSXML.IXMLDOMParseError
   ' Obtain the ParseError object
   Set xPE = xDoc.parseError
   With xPE
      strErrText = "Your XML Document failed to load" & _
        "due the following error." & vbCrLf & _
        "Error #: " & .errorCode & ": " & .reason & _
        "Line #: " & .Line & vbCrLf & _
        "Line Position: " & .linepos & vbCrLf & _
        "Position In File: " & .filepos & vbCrLf & _
        "Source Text: " & .srcText & vbCrLf & _
        "Document URL: " & .url
    End With

    MsgBox strErrText, vbExclamation

End If


Set xDoc = Nothing

VBScript使用しよう

[编辑]
Set objParser = CreateObject( "Microsoft.XMLDOM" )

参考さんこう文献ぶんけん

[编辑]
  1. ^ MSXML Version List页面そん档备份そん互联网档あん) at Microsoft.
  2. ^ MSDN:MSXML版本はんぽん6以替だい版本はんぽん4. [2018-01-13]. (原始げんし内容ないようそん于2018-01-13). 
  3. ^ Office 2010: What's removed: Office 2010 Resource Kit documentation on TechNet. [2018-01-13]. (原始げんし内容ないようそん于2017-08-26). 
  4. ^ MSXML 4.0 SP3 Release Notes, Microsoft, 2009-09-29 [2011-01-21], (原始げんし内容ないようそん于2020-08-06) 
  5. ^ MSXML Roadmap, Microsoft, 2013-03-15 [2015-07-11], (原始げんし内容ないようそん于2018-01-13) 
  6. ^ MSDN:A Beginner's Guide to the XML DOM. [2015-12-02]. (原始げんし内容ないようそん于2015-12-09).