- /*++
Copyright (c) 2007 nsfocus information technology
Module Name:
enumxml.cpp
Abstract:
枚举foo,打印每个节点的值。
Author:
xuyibo (xuyibo) 2007-09-22
Revision History:
--*/
#include #include #pragma comment(lib, "ole32.lib") #pragma comment(lib, "oleaut32.lib")
IXMLDOMDocument2* LoadXML(WCHAR* pXML) { HRESULT hr; IXMLDOMDocument2* pXMLDoc = NULL; IXMLDOMParseError* pObjError = NULL; BSTR bstr = NULL; VARIANT_BOOL status; VARIANT vSrc;
// // 创建一msxml 文档实例,返回IXMLDOMDocument2接口。 hr = CoCreateInstance(CLSID_DOMDocument2, NULL, CLSCTX_INPROC_SERVER, __uuidof(IXMLDOMDocument2), (void**)&pXMLDoc); if (FAILED(hr)) { printf("Failed to CoCreate an instance of an XML DOM\n"); printf("Error code: %x\n", hr); goto clean; }
hr = pXMLDoc->put_async(VARIANT_FALSE); if (FAILED(hr)) { printf("Failed to set async property\n"); goto clean; }
hr = pXMLDoc->put_validateOnParse(VARIANT_FALSE); if (FAILED(hr)) { printf("Failed to set validateOnParse\n"); goto clean; }
hr = pXMLDoc->put_resolveExternals(VARIANT_FALSE); if (FAILED(hr)) { printf("Failed to disable resolving externals.\n"); goto clean; }
VariantInit(&vSrc); V_BSTR(&vSrc) = SysAllocString(pXML); V_VT(&vSrc) = VT_BSTR;
// // 读取foo.xml hr = pXMLDoc->load(vSrc, &status);
if (status!=VARIANT_TRUE) { hr = pXMLDoc->get_parseError(&pObjError); hr = pObjError->get_reason(&bstr); printf("Failed to load DOM from books.xml. %S\n",bstr); goto clean; }
clean: if (bstr) SysFreeString(bstr); if (&vSrc) VariantClear(&vSrc); if (pObjError) pObjError->Release();
return pXMLDoc; }
void Dump(BSTR pData) { char Buffer[512];
WideCharToMultiByte(CP_ACP, WC_COMPOSITECHECK, pData, -1, Buffer, sizeof(Buffer), NULL, NULL); puts(Buffer); }
int main(int argc, char* argv[]) { HRESULT hr; IXMLDOMDocument2* pXMLDoc = NULL; IXMLDOMNodeList* pNodeList = NULL; IXMLDOMNode* Node; IXMLDOMNamedNodeMap* NodeMap; IXMLDOMNode* IDNode; long I; long Length; BSTR BStr; BSTR BStrValue;
// // First we must call CoInitialize. //
CoInitialize(NULL);
// // Load xml. //
pXMLDoc = LoadXML(L"foo.xml"); if (pXMLDoc == NULL) { return 1; }
if (pXMLDoc->selectNodes(L"//root/item", &pNodeList) != S_OK) { return 1; }
hr = pNodeList->get_length(&Length); if (FAILED(hr)) { return 1; }
for (I = 0; I < Length; i++) { if (pNodeList->get_item(I, &Node) == S_OK) {
// // Dump text => Hello MSXML //
if (Node->get_text(&BStr) == S_OK) { Dump(BStr); }
if (Node->get_attributes(&NodeMap) == S_OK) { if (NodeMap->getNamedItem(L"id", &IDNode) == S_OK) {
// // Dump id => 1 //
if (IDNode->get_text(&BStrValue) == S_OK) { Dump(BStrValue); puts(""); SysFreeString(BStrValue); } IDNode->Release(); } NodeMap->Release(); }
SysFreeString(BStr); Node->Release(); } }
pXMLDoc->Release();
// // Finally we should call CoUninitialize //
CoUninitialize();
getchar(); return 0; }
|
相关推荐
使用msxml方法 的xml解析器 源码,个人觉得还不错。
微软的xml语言解析器
微软提供了一个XML语法解析器,即一个叫做MSXML.DLL的动态链接库,实际上它是一个COM(Component Object Model)对象库,里面封装了进行XML解析时所需要的所有对象。因为COM是一种以二进制格式出现的和语言无关的可...
开发环境为VC,基于对话框,用msxml组件解析XML文档,运用递归循环的方法实现树结构,支持中文,可以运行的一个实例。
当您打开工作表, XML解析器: XML解析器 加载文件:在这里,您可以只加载一个XML文件,并看到它解析在TreeView 。 pb_list_style :档案emplyees.xml将解析和转化利用pb_list_style.xsl ,由此产生的HTML中...
XML 解析器,两个版本,任你选择.XML初学者的必备工具
msxml是由微软推出的xml语言解析器,主要用来解析所有由微软软件生成的xml标准文档,本款是msxml4.0 sp3版本,也是目前msxml4.0版本中最完善的版本。由于msxml各个版本之间是互相独立的,所以一般用户都需要同时安装...
msxml微软的xml语言解析器,用来解释xml语言的。包含 SDK 软件开发套件。
安装了这个之后在MFC中#import <msxml4.dll>就可以在MFC中调用IXMLDOMDocumentPtr类的函数
微软的xml语言解析器,用来解释xml语言的。就好像html文本下载到本地,浏览器会检查html的语法,解释html文本然后显示出来一样。要使用xml文件就一定要用到xml parser。不过不仅仅微软有,像ibm,sun都有自己的xml ...
Microsoft® XML Core Services (MSXML) 5.0 ,微软 XML解析器与架构的参考手册,英文版。
MSXML:CMarkupMSXML类用EDOM方法包装了微软的XML服务。MSXML编译选项用来演示这个类。 UNICODE(统一字符编码标准):对于WindowsNT和WindowsCE平台能够被编译成UNICODE,在WindowsNT UNICODE下,XML文档是流到UTF-...
MSXML 是一款微软的 xml 语言解析器,它的全名是:「Microsoft XML Core Services」,主要是用来执行或开发经由 XML 所设计的最新...
本丈通过分析微软公司的MSXML的XMI.语法解析器(即MSXML.DLL的动态链接库)的工作原理,利用这个COM对象库中提供的时象,实现了对XML文档的解析,并用VC++加以实现。
微软的xml语言解析器,用来解释xml语言的。就好像html文本下载到本地,浏览器会检查html的语法,解释html文本然后显示出来一样。要使用xml文件就一定要用到xml parser。不过不仅仅微软有,像ibm,sun都有自己的xml ...
msxml.msi下载,提示xml出错时安装即可。xml解析器
MSXML解析器允许你装载和创建一个文档,收集文档的错误信息,得到和操作文档中的所有的信息和结构,并把文档保存在一个XML文件中。DOM提供给用户一个接口来装载、到达和操作并序列化XML文档。DOM提供了对存储在内存...
2.3.4 标记:一个简单的例子 2.3.5 文档元素 2.3.6 子元素 2.3.7 元素嵌套 2.3.8 字符串 2.4 字符数据 2.5 属性 2.5.1 特殊属性 2.5.2 空白 2.5.3 行尾的处理 2.6 字符引用和实体引用 2.6.1 字符引用 ...
2.3.4 标记:一个简单的例子 2.3.5 文档元素 2.3.6 子元素 2.3.7 元素嵌套 2.3.8 字符串 2.4 字符数据 2.5 属性 2.5.1 特殊属性 2.5.2 空白 2.5.3 行尾的处理 2.6 字符引用和实体引用 2.6.1 字符引用 ...