程序是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)相关推荐

  1. XML文件解析(在Windows环境MFC程序中,使用自带的MSXML6.dll解析)

    主要总结一下MSXML DOM接口的应用.DOM(Document Object Model) 是微软提供的处理XML文档的一个API标准库,我们可以将其理解为一组抽象了XML文档结构的接口. MSX ...

  2. Linux下ACE、xml解析库开发环境搭建

    一.安装环境   1.安装vmware12.0版本 2.安装centos6.6的镜像文件 3.安装vmare_tool工具(方便虚拟机与实体机的切换) 4.配置网络      虚拟机网络连接方式:桥接 ...

  3. 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 ...

  4. java xml中的冒号_Java jdom解析xml文件带冒号的属性

    Java jdom解析xml文件带冒号的属性 如果xml文件解析带了冒号的属性,一般都是要特别处理,这里是命名空间,N年前遇到过一次忘记记录,后来也忘了,这次再记录下. 解决了,记录下,分享给大家,百 ...

  5. 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 ...

  6. oracle如何获取xml节点,oracle解析xml,带命令空间的节点获取

    在xml里有两个解析xml的函数extract和extractVALUE,这两个函数可以带两个参数,也可以带上个参数,第三个参数是命令空间,对于namespace_string,刚开始我也很疑惑,然后 ...

  7. C语言答案解析,C语言题库带详细讲解答案解析.doc

    C语言题库带详细讲解答案解析.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. 3. ...

  8. 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 ...

  9. 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 : ...

  10. 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 ...

最新文章

  1. 模板方法设计模式与策略模式
  2. linux PAM模块
  3. 技能CDDemo(点击鼠标左键实现技能界面旋转)
  4. 关于node-sass和sass-loader安装上去的时候的时候报错的问题
  5. 在线打开html文件,html是什么文件?html文件怎么打开?
  6. DFB [02] 基础和相关的非常用的几个链接
  7. Android游戏开发基础part4--Bitmap位图的渲染与操作
  8. 音视频开发(28)---流媒体并发量与宽带、码率计算详解
  9. Mac安装telnet
  10. 力扣538.把二叉搜索树转换为累加树(JavaScript)
  11. 报表自动化就是连接数据库?错,它打开了数据仓库的大门
  12. Win10 WSL adb使用
  13. Audio Jungle宣传专题片头音乐AE模板专用配乐合集-永久更新
  14. 数字图像处理第三版学习笔记一
  15. 【1】星空派GD32F303开发板介绍
  16. Sql server添加示例数据库Northwind
  17. 女朋友问阿里双十一实时大屏如何实现,我惊呆一会,马上手把手教她背后的大数据技术
  18. ArcGIS校园3D展示图制作详细教程
  19. 【提升coding能力】100道Python练习题11-20
  20. 湘潭大学计算机组成原理试卷,湘潭大学11级原理课堂测验题集.ppt

热门文章

  1. 教你玩转ACDSEE
  2. mac 截图工具| Snipaste
  3. 2020年岁末的年终总结——来自一位70后的大龄程序员的总结分享
  4. 转并学习: 将rar文件转换为zip格式
  5. itunes不能读取iPhone的内容,请前往iPhone“偏好设置”的“摘要”选项卡,然后单击“恢复”
  6. kindle索引_Kindle 卡索引问题解决方法汇总
  7. 简单 PS CS6蒙版抠图技巧
  8. 鸡汤来了,成为数据分析师的快速指南
  9. (JButton) e.getSource();是什么意思
  10. 分享几个快乐有趣的网站