MFC读写XML文件
来源:互联网 发布:我想在淘宝上卖东西 编辑:程序博客网 时间:2024/05/29 10:59
使用MSXML.DLL读写XML;
- 文件顶部加入
- #import "msxml3.dll";
- usingnamespace 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","12345"); //设置根标签的属性;
- XMLDOC->appendChild(XMLROOT);
- CString TMP;
- MSXML2::IXMLDOMElementPtr XMLNODE;
- for(int I=0;I<10;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=0;I<XMLNODESNUM;I++)
- {
- XMLNODES->get_item(I,&XMLNODE);//获得某个子节点;
- XMLNODE->get_attributes(&XMLNODEATTS);//获得某个节点的所有属性;
- XMLNODEATTS->get_length(&ATTSNUM);//获得所有属性的个数;
- for(int J=0;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();
使用MSXML.DLL读写XML;
- mfc 读写 XML文件
- MFC读写XML文件
- MFC读写XML文件
- MFC读写XML文件
- MFC读写XML文件
- MFC读写XML文件
- MFC读写XML文件
- 用MFC读写xml文件
- MFC读写XML
- MFC文件读写
- MFC 读写文件
- MFC文件读写技巧
- MFC INI文件读写
- MFC文件普通读写
- MFC文件读写
- MFC文件读写
- MFC INI文件读写
- MFC文件读写
- disable 主菜单
- 时钟中断导致的内核模块死锁
- [Python]多线程--threading模块实现
- 用栈实现数制转换
- List collides with another import statement 同一个类相同包名碰撞
- MFC读写XML文件
- 用线性表实现多个多项式相加
- Office Outlook API (一)Create Outlook Instance
- cloudstack基础网络zone关闭安全组功能
- 在VS2010下编译无法打开包括文件:“GL/glaux.h”: No such file or directory的解决 .
- Word2003中下划线怎么打出来
- oracle 存储过程生成xml文件
- ForFisrtWork--No.2:2009软件开发笔试题目
- 应用程序获得USB设备插入或者拔出通知