MFC使用自带的MSXML6.dll解析xml(开发环境vc2010)
程序是win32控制台程序
// msxml.cpp : 定义控制台应用程序的入口点。 #include "stdafx.h" #include <iostream> #include <atlstr.h> #import <MSXML6.dll> using namespace MSXML2; using namespace std;void msxml2_init() {::CoInitialize(NULL); }void msxml2_del() {::CoUninitialize(); } /* nodename: 要查找的节点的名字 * xmbuf: xml字符串 * 函数功能:查找目标节点的所有属性值 */ void find_node_attr(char *nodename, char *xmlbuf) {MSXML2::IXMLDOMDocumentPtr pDoc;HRESULT hr;hr=pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument60));if(FAILED(hr)){ printf("无法创建DOMDocument对象,请检查是否安装了MS XML Parser 运行库!\n"); return ;} /* 加载xml字符串 */pDoc->loadXML(xmlbuf); MSXML2::IXMLDOMNodePtr pRoot_node, pNode; MSXML2::IXMLDOMNamedNodeMapPtr pAttrs;MSXML2::IXMLDOMNodePtr pAttrItem;long nCount;/* 在树中查找名为Book的节点,"//"表示在任意一层查找 */char tmpnodename[20] = "//";strncat(tmpnodename, nodename, 3);pNode = pDoc->selectSingleNode(tmpnodename);/* get_attributes()来获取该节点的所有属性列表 */pNode->get_attributes(&pAttrs);pAttrs->get_length(&nCount);cout << "共有" << nCount << "个属性值" << nCount << endl;for(int i = 0 ; i < nCount ; i++){ pAttrs->get_item(i, &pAttrItem);/* nodeName, nodeTypedValue得到属性名和属性值 */cout << (_bstr_t)pAttrItem->nodeName << ":" ;cout << (_bstr_t)pAttrItem->nodeTypedValue << endl;} //使用过了的指针要释放。未使用的指针不要释放,否则会触发中断错误。 pDoc.Release();pNode.Release();pAttrs.Release();pAttrItem.Release(); }/* * 函数功能:遍历整个xml_buf的内容并打印节点名字和节点的属性值 */ void print_xmlnode(char *xmlbuf) { MSXML2::IXMLDOMDocumentPtr pDoc;HRESULT hr;hr=pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument60));if(FAILED(hr)){ printf("无法创建DOMDocument对象,请检查是否安装了MS XML Parser 运行库!\n"); return ;} /* 加载xml字符串 */pDoc->loadXML(xmlbuf); MSXML2::IXMLDOMNodePtr pGwsIp_node, pRoot_node, pNode; MSXML2::IXMLDOMNamedNodeMapPtr pAttrs = NULL;MSXML2::IXMLDOMNodePtr pAttrItem;/* 遍历整个xml_buf的内容并打印节点名字和节点的属性值 */pRoot_node = pDoc->firstChild;pGwsIp_node = pRoot_node->firstChild;//pDoc->firstChild->firstChild; MSXML2::DOMNodeType nodeType; long nCount ;//节点名称 root下子节点的个数unsigned int num = pRoot_node->childNodes->length;cout << "num = " << num << endl;char node_name[20] = {};//Gettext()获取节点值for(int i = 0; i < num; i++) {strcpy(node_name, pRoot_node->childNodes->item[i]->Gettext());cout << "node_name = " << node_name << endl;}/*IXMLDOMNamedNodeMap是xml中描述一个结点属性的接口,通过它用户可以对某个节点的属性进行操作*/pGwsIp_node->get_attributes(&pAttrs);pAttrs->get_length(&nCount);for(int i = 0 ; i < nCount ; i++){ pAttrs->get_item(i,&pAttrItem);/*get_nodeName,get_nodeTypedValue得到属性名和属性值*/cout << (_bstr_t)pAttrItem->nodeName << ":" ;cout << (_bstr_t)pAttrItem->nodeTypedValue << endl;} //使用过了的指针要释放。未使用的指针不要释放,否则会触发中断错误。 pDoc.Release();pRoot_node.Release();pGwsIp_node.Release();pAttrs.Release();pAttrItem.Release(); }int _tmain(int argc, _TCHAR* argv[]) {msxml2_init();char buf[300] = "<gwsctrl><gws ip=\"192.168.1.24\" emac=\"D4:CA:6D:35:0D:95\" wmac=\"D4:CA:6D:11:59:9F\"/><A>一个节点</A><B>二个节点</B></gwsctrl>";find_node_attr("gws", buf);print_xmlnode(buf);getchar();msxml2_del();return 0; }
运行后的效果
转载于:https://www.cnblogs.com/Genesis-007/p/5652610.html
MFC使用自带的MSXML6.dll解析xml(开发环境vc2010)相关推荐
- XML文件解析(在Windows环境MFC程序中,使用自带的MSXML6.dll解析)
主要总结一下MSXML DOM接口的应用.DOM(Document Object Model) 是微软提供的处理XML文档的一个API标准库,我们可以将其理解为一组抽象了XML文档结构的接口. MSX ...
- Linux下ACE、xml解析库开发环境搭建
一.安装环境 1.安装vmware12.0版本 2.安装centos6.6的镜像文件 3.安装vmare_tool工具(方便虚拟机与实体机的切换) 4.配置网络 虚拟机网络连接方式:桥接 ...
- fatal error C1189: #error : Building MFC application with /MD[d] (CRT dll version) requires MFC sha
调试程序时出现以下问题:d:\program files (x86)\microsoft visual studio 10.0\vc\atlmfc\include\afx.h(24): fatal e ...
- java xml中的冒号_Java jdom解析xml文件带冒号的属性
Java jdom解析xml文件带冒号的属性 如果xml文件解析带了冒号的属性,一般都是要特别处理,这里是命名空间,N年前遇到过一次忘记记录,后来也忘了,这次再记录下. 解决了,记录下,分享给大家,百 ...
- Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version 错误解决
Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version 错误解决 今天在VS201 ...
- oracle如何获取xml节点,oracle解析xml,带命令空间的节点获取
在xml里有两个解析xml的函数extract和extractVALUE,这两个函数可以带两个参数,也可以带上个参数,第三个参数是命令空间,对于namespace_string,刚开始我也很疑惑,然后 ...
- C语言答案解析,C语言题库带详细讲解答案解析.doc
C语言题库带详细讲解答案解析.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. 3. ...
- Building MFC application with /MD[d] (CRT dll version)requires MFC shared dll version~~~~
转自:http://www.byywee.com/page/M0/S530/530822.html 昨天编译文件时出现了Building MFC application with /MD[d] (CR ...
- afx.h(24): fatal error C1189: #error : Building MFC application with /MD[d] (CRT dll version) requi
问题: 在c++/cli控制台项目中,因为要使用cstdiofile类,所有包含了afx.h,但是报如下错误: "afx.h(24): fatal error C1189: #error : ...
- Building MFC application with /MD[d] (CRT dll vers
fatal error C1189: #error : Building MFC application with /MD[d] (CRT dll version) requires MFC sha ...
最新文章
- 模板方法设计模式与策略模式
- linux PAM模块
- 技能CDDemo(点击鼠标左键实现技能界面旋转)
- 关于node-sass和sass-loader安装上去的时候的时候报错的问题
- 在线打开html文件,html是什么文件?html文件怎么打开?
- DFB [02] 基础和相关的非常用的几个链接
- Android游戏开发基础part4--Bitmap位图的渲染与操作
- 音视频开发(28)---流媒体并发量与宽带、码率计算详解
- Mac安装telnet
- 力扣538.把二叉搜索树转换为累加树(JavaScript)
- 报表自动化就是连接数据库?错,它打开了数据仓库的大门
- Win10 WSL adb使用
- Audio Jungle宣传专题片头音乐AE模板专用配乐合集-永久更新
- 数字图像处理第三版学习笔记一
- 【1】星空派GD32F303开发板介绍
- Sql server添加示例数据库Northwind
- 女朋友问阿里双十一实时大屏如何实现,我惊呆一会,马上手把手教她背后的大数据技术
- ArcGIS校园3D展示图制作详细教程
- 【提升coding能力】100道Python练习题11-20
- 湘潭大学计算机组成原理试卷,湘潭大学11级原理课堂测验题集.ppt
热门文章
- 教你玩转ACDSEE
- mac 截图工具| Snipaste
- 2020年岁末的年终总结——来自一位70后的大龄程序员的总结分享
- 转并学习: 将rar文件转换为zip格式
- itunes不能读取iPhone的内容,请前往iPhone“偏好设置”的“摘要”选项卡,然后单击“恢复”
- kindle索引_Kindle 卡索引问题解决方法汇总
- 简单 PS CS6蒙版抠图技巧
- 鸡汤来了,成为数据分析师的快速指南
- (JButton) e.getSource();是什么意思
- 分享几个快乐有趣的网站