C++ 操作XML文件 使用MSXML.DLL
使用MSXML.DLL读写XML; 文件顶部加入 #import "msxml3.dll"; using namespace MSXML2; //这两句作用是,在程序的文件夹下生成MSXML3.TLH和MSXML3.TLI两个文件; --------------------------------------------------------- 创建一个XML文件; ::CoInitialize(NULL);
MSXML2::IXMLDOMDocumentPtr XMLDOC;
MSXML2::IXMLDOMElementPtr XMLROOT; HRESULT HR = XMLDOC.CreateInstance(_uuidof(MSXML2::DOMDocument30));
if(!SUCCEEDED(HR))
{
MessageBox("faild!!");
return;
}
XMLROOT = XMLDOC->createElement("ROOT");
XMLROOT->setAttribute("ID",""); //设置根标签的属性;
XMLDOC->appendChild(XMLROOT);
CString TMP;
MSXML2::IXMLDOMElementPtr XMLNODE;
for(int I=;I<;I++)
{
TMP.Format("%d",I);
XMLNODE = XMLDOC->createElement((_bstr_t)("NODE"+TMP));
XMLNODE->put_text((_bstr_t)"NODETEXTS");//设置标签的文本内容;
XMLNODE->setAttribute("ID",(_variant_t)TMP);//设置标签的属性及内容;
XMLNODE->setAttribute("NAME","NODENAME");
XMLROOT->appendChild(XMLNODE);
}
XMLDOC->save("XMLTEST.XML");
XMLNODE.Release();
XMLROOT.Release();
XMLDOC.Release();
::CoUninitialize(); ------------------------------------------------------------------ 读取一个XML; ::CoInitialize(NULL);
MSXML2::IXMLDOMDocumentPtr XMLDOC;
MSXML2::IXMLDOMElementPtr XMLROOT;
MSXML2::IXMLDOMElementPtr XMLELEMENT;
MSXML2::IXMLDOMNodeListPtr XMLNODES; //某个节点的所以字节点
MSXML2::IXMLDOMNamedNodeMapPtr XMLNODEATTS;//某个节点的所有属性;
MSXML2::IXMLDOMNodePtr XMLNODE;
HRESULT HR = XMLDOC.CreateInstance(_uuidof(MSXML2::DOMDocument30));
if(!SUCCEEDED(HR))
{
MessageBox("faild!!");
return;
}
XMLDOC->load("XMLTEST.XML");
XMLROOT = XMLDOC->GetdocumentElement();//获得根节点;
XMLROOT->get_childNodes(&XMLNODES);//获得根节点的所有子节点;
long XMLNODESNUM,ATTSNUM;
XMLNODES->get_length(&XMLNODESNUM);//获得所有子节点的个数;
CString TMP;
TMP.Format("%d",XMLNODESNUM);
MessageBox(TMP);
for(int I=;I<XMLNODESNUM;I++)
{
XMLNODES->get_item(I,&XMLNODE);//获得某个子节点;
XMLNODE->get_attributes(&XMLNODEATTS);//获得某个节点的所有属性;
XMLNODEATTS->get_length(&ATTSNUM);//获得所有属性的个数;
for(int J=;J<ATTSNUM;J++)
{
XMLNODEATTS->get_item(J,&XMLNODE);//获得某个属性;
CString T1 = (char*)(_bstr_t)XMLNODE->nodeName;
CString T2 = (char*)(_bstr_t)XMLNODE->text;
MessageBox(T1+" = "+T2);
}
//MessageBox((_bstr_t)XMLNODE->nodeName+": "+(_bstr_t)XMLNODE->text);
}
return;
//XMLDOC->save("XMLTEST.XML");
XMLNODES.Release();
XMLNODE.Release();
XMLROOT.Release();
XMLDOC.Release();
::CoUninitialize(); --------------------------------------------------------- 总结: XML文件档类型:MSXML2::IXMLDOMDocumentPtr; 单个元素类型:MSXML2::IXMLDOMElementPtr; 单个节点类型:MSXML2::IXMLDOMNodePtr; 所有子节点类型:MSXML2::IXMLDOMNodeListPtr; 所有属性类型:MSXML2::IXMLDOMNamedNodeMapPtr; 获得节点个数的方法:get_length(); 获得所有子节点的方法:get_childNodes(); 获得指定节点的方法:get_item(索引号,单个节点类型变量); 写入单个节点的文本内容方法:put_text((_bstr_t)"内容"); 获得单个节点的文本内容属性:XMLNODE->text; 获得单个属性的内容属性:XMLNODEATT->text; 节点名的属性为:XMLNODE->nodeName; --------------------------------------------------------------- XML创建文件一般过程: ::CoInitialize(NULL); HRESULT HR = XMLDOC.CreateInstance(_uuidof(MSXML2::DOMDocument30));
if(!SUCCEEDED(HR))
{
MessageBox("faild!!");
return;
}
XMLROOT = XMLDOC->createElement("ROOT");//创建文件; 操作文件..................... XMLDOC->save("XMLTEST.XML");//保存文件;
XMLNODE.Release();
XMLROOT.Release();
XMLDOC.Release();
::CoUninitialize(); ------------------------------------------------------------------------------ 加载文件过程序: ::CoInitialize(NULL);
HRESULT HR = XMLDOC.CreateInstance(_uuidof(MSXML2::DOMDocument30));
if(!SUCCEEDED(HR))
{
MessageBox("faild!!");
return;
}
XMLDOC->load("XMLTEST.XML"); 文件操作......................... XMLDOC->save("XMLTEST.XML");//可以保存对文件的修改;
XMLNODES.Release();
XMLNODE.Release();
XMLROOT.Release();
XMLDOC.Release();
::CoUninitialize();
C++ 操作XML文件 使用MSXML.DLL的更多相关文章
- WebAPI调用笔记 ASP.NET CORE 学习之自定义异常处理 MySQL数据库查询优化建议 .NET操作XML文件之泛型集合的序列化与反序列化 Asp.Net Core 轻松学-多线程之Task快速上手 Asp.Net Core 轻松学-多线程之Task(补充)
WebAPI调用笔记 前言 即时通信项目中初次调用OA接口遇到了一些问题,因为本人从业后几乎一直做CS端项目,一个简单的WebAPI调用居然浪费了不少时间,特此记录. 接口描述 首先说明一下,基于 ...
- Asp.Net 操作XML文件的增删改查 利用GridView
不废话,直接上如何利用Asp.NET操作XML文件,并对其属性进行修改,刚开始的时候,是打算使用JS来控制生成XML文件的,但是最后却是无法创建文件,读取文件则没有使用了 index.aspx 文件 ...
- Java操作XML文件 dom4j 篇
在项目中,我们很多都用到了xml文件,无论是参数配置还是与其它系统的数据交互.今天就来讲一下Java 中使用dom4j来操作XML文件. 我们需要引入的包: //文件包 import java.io. ...
- PHP操作XML文件学习笔记
原文:PHP操作XML文件学习笔记 XML文件属于标签语言,可以通过自定义标签存储数据,其主要作用也是作为存储数据. 对于XML的操作包括遍历,生成,修改,删除等其他类似的操作.PHP对于XML的操作 ...
- Qt之QDomDocument操作xml文件-模拟ini文件存储
一.背景 不得不说Qt是一个很强大的类库,不管是做项目还是做产品,Qt自身封装的东西就已经非常全面了,我们今天的这篇文章就是模拟了Qt读写ini文件的一个操作,当然是由于一些外力原因,我们决定自己来完 ...
- JAVA中通过Jaxp操作XML文件基础
Java中有多种方式操作XML文件,目前讲一讲以SUN公司提供的DocumentBuilderFactory工厂类对象操作XML. 使用XML基本操作就是需要CRUD(增删改查),那么首先通过一个查询 ...
- C#操作xml文件:使用XmlDocument 实现读取和写入
XML文件是一种常用的文件格式,例如WinForm里面的app.config以及Web程序中的web.config文件,还有许多重要的场所都有它的身影.Xml是Internet环境中跨平台的,依赖于内 ...
- 利用XmlDocument操作XML文件
利用XmlDocument可以方便的操作XML文件. .操作XML文件基本方法 ()添加对System.Xml的引用,并使用using语句添加引用: ()假设要读取的XML文件如下: <?xml ...
- C#基础知识---Linq操作XML文件
概述 Linq也就是Language Integrated Query的缩写,即语言集成查询,是微软在.Net 3.5中提出的一项新技术. Linq主要包含4个组件---Linq to Objects ...
随机推荐
- CANopen学习——PDO
查找资料时,发现一个很好的博客,博主剖析的通俗易懂 http://www.cnblogs.com/winshton/p/4897556.html PDO定义: 过程数据对象,用来传输实时数据.因为 ...
- bitmap解码
#include <stdio.h> #include <stdlib.h> #include <string.h> #define BYTE unsigned c ...
- BZOJ1500[NOI2005]维修数列
Description Input 输入的第1 行包含两个数N 和M(M ≤20 000),N 表示初始时数列中数的个数,M表示要进行的操作数目.第2行包含N个数字,描述初始时的数列.以下M行,每行一 ...
- STL bind1st bind2nd详解
STL bind1st bind2nd详解 先不要被吓到,其实这两个配接器很简单.首先,他们都在头文件<functional>中定义.其次,bind就是绑定的意思,而1st就代表fir ...
- [LeetCode] Word Ladder II 词语阶梯之二
Given two words (start and end), and a dictionary, find all shortest transformation sequence(s) from ...
- 如何用Azure Web App Services接入微信公众号
注:本文提到的代码示例下载地址>如何用Azure Web App Services接入微信公众号 如何用Azure Web App Services接入微信公众号 简介 此示例演示如何创建Azu ...
- jQuery的页面载入
jQuery 页面载入 $(document).ready(function(){ //程序段 }) 原生javaScript window.onload = function(){ //程序段 } ...
- supervisor的安装与简单介绍
1,介绍 Supervisor是一个进程管理工具,官方的说法 用途就是有一个进程需要每时每刻不断的跑,但是这个进程又有可能由于各种原因有可能中断.当进程中断的时候我希望能自动重新启动它,此时,我就需要 ...
- Azure AD Connect 手动同步
我们目前采用工具Azure AD Connect 目录同步工具将本地域控制器的用户信息同步至office365和Azure 在之前目录同步工具中使用Windows 任务计划程序或单独的 Windows ...
- web.xml加载顺序
一 1.启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点. 2.紧急着,容创建一个Ser ...