MSXML
版本 历史
[编辑]MSXML
现行有效 版本
[编辑]- MSXML 6.0 MSXML6
是 最新 版本 。与 MSXML3一 起 随 Microsoft SQL Server 2005、Visual Studio 2005、.NET Framework 3.0、Windows Vista、Windows XP Service Pack 3发行。支持 64位 本地 环境。版本 6可 以替代 版本 4[2],但 不能 替 代 版本 3。MSXML 6不 支持 Windows 9x。 - MSXML 3.0对应于msxml3.dll。MSXML 3.0 SP2
随 Windows XP、Internet Explorer 6.0与 MDAC 2.7发行。Windows XP SP2包含 MSXML 3.0 SP5,作 为MDAC 2.81的 一 部分 。Internet Explorer版本 6.0、7.0、8.0使用 MSXML 3解析 XML文 档。MSXML 3.0 SP7是 Windows 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
IXMLDOMDocument
[编辑]IXMLDOMDocument
//声明 并创建 一 个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
节点类型 | |
---|---|
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
IXMLDOMNamedNodeMap
[编辑]IXMLDOMNamedNodeMap
IXMLDOMElement
[编辑]IXMLDOMElement
//获取文 档根节点的 方法 一 :
MSXML2::IXMLDOMElementPtr pRootNode = pXmlDoc->documentElement;
//获取文 档根节点的 方法 二 :
MSXML2::IXMLDOMElementPtr pRootNode2;
pXmlDoc->get_documentElement(&pRootNode2);
IXMLDOMAttribute
[编辑]IXMLDOMAttribute
IXMLDOMText
[编辑]IXMLDOMText
IXMLDOMComment
[编辑]IXMLDOMComment
IXMLDOMParseError
[编辑]IXMLDOMParseError
IXMLDOMImplementation
[编辑]IXMLDOMCharacterData
[编辑]IXMLDOMCharacterData
IXMLDOMCDATASection
[编辑]IXMLDOMCDATASection
IXMLDOMDocumentFragment
[编辑]IXMLDOMDocumentType
[编辑]IXMLDOMProcessingInstruction
[编辑]IXMLDOMNotation
[编辑]IXMLDOMEntity
[编辑]IXMLDOMEntityRefernce
[编辑]各 种智能 指 针
[编辑]DOM
C++语言使用
[编辑]
#import <msxml6.dll> raw_interfaces_only
这使
也可以通过连
MSXML
Visual Basic使用
[编辑]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" )
参考 文献
[编辑]- ^ MSXML Version List (页面
存 档备份,存 于互联网档案 馆) at Microsoft. - ^ MSDN:MSXML
版本 6可 以替代 版本 4. [2018-01-13]. (原始 内容 存 档于2018-01-13). - ^ Office 2010: What's removed: Office 2010 Resource Kit documentation on TechNet. [2018-01-13]. (
原始 内容 存 档于2017-08-26). - ^ MSXML 4.0 SP3 Release Notes, Microsoft, 2009-09-29 [2011-01-21], (
原始 内容 存 档于2020-08-06) - ^ MSXML Roadmap, Microsoft, 2013-03-15 [2015-07-11], (
原始 内容 存 档于2018-01-13) - ^ MSDN:A Beginner's Guide to the XML DOM. [2015-12-02]. (
原始 内容 存 档于2015-12-09).