首页 > 其他分享 >VC入门宝典十一(xml)

VC入门宝典十一(xml)

时间:2022-10-05 11:34:10浏览次数:48  
标签:xml VC get 宝典 bstr MSXML2 pDoc childNode


xml

                                                  何志丹

我们建立一个xml文件,内容如图所示:

一,建立一个基于对话框的程序,工程名为xml;
二, 初始化OLE.

BOOL CXmlApp::InitInstance()

{

AfxOleInit();

…….

}



三, 在对话框中增加一个按钮,ID为IDC_CREATE,我们在这个按钮的响应函数中生成一个xml文件.

void CXmlDlg::OnCreate()

{

MSXML2::IXMLDOMDocumentPtr pDoc;

MSXML2::IXMLDOMElementPtr xmlRoot ;

//创建DOMDocument对象

HRESULT hr = pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument30));

if(!SUCCEEDED(hr))

{
MessageBox("无法创建DOMDocument对象,请检查是否安装了MS XML Parser 运行库!");

}


//根节点的名称为china

pDoc->raw_createElement((_bstr_t)(char*)"china", &xmlRoot);

pDoc->raw_appendChild(xmlRoot, NULL);


MSXML2::IXMLDOMElementPtr childNode ;
pDoc->raw_createElement((_bstr_t)(char*)"City", &childNode);

childNode->Puttext("WuHan");//节点值

childNode->setAttribute("population","8,000,000");//属性名,属性值

childNode->setAttribute("area","10000");

xmlRoot->appendChild(childNode);


pDoc->raw_createElement((_bstr_t)(char*)"City", &childNode);

childNode->Puttext("ShangHai");

childNode->setAttribute("population","12,000,000");

childNode->setAttribute("area","12000");

xmlRoot->appendChild(childNode);


//保存到文件

//如果不存在就建立,存在就覆盖

pDoc->save("f://he.xml");
}

不要忘了#import "msxml4.dll" //引入类型库



四, 再增加一个按钮,ID为IDC_GET,在这个按钮的响应函数中读取xml文件.

void CXmlDlg::OnGet()

{

//创建DOMDocument对象

MSXML2::IXMLDOMDocumentPtr pDoc;

HRESULT hr = pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument30));

if(!SUCCEEDED(hr))

{
MessageBox("无法创建DOMDocument对象,请检查是否安装了MS XML Parser 运行库!");

}

//加载文件

pDoc->load("f://he.xml");


//在树中查找名为City的节点,"//"表示在任意一层查找

MSXML2::IXMLDOMElementPtr childNode ;

childNode = (MSXML2::IXMLDOMElementPtr)(pDoc->selectSingleNode("//City"));


//得到节点类型

MSXML2::DOMNodeType nodeType;

childNode->get_nodeType(&nodeType);


//节点名称

BSTR var;

CString name;

childNode->get_nodeName(&var);

name = (char*)(_bstr_t)var;


//节点值

VARIANT varVal;

childNode->get_nodeTypedValue(&varVal);

CString strValue = (char*)(_bstr_t)varVal;


//节点属性,放在链表中

MSXML2::IXMLDOMNamedNodeMapPtr pAttrs = NULL;

MSXML2::IXMLDOMNodePtr pAttrItem;

childNode->get_attributes(&pAttrs);

long nCount ;

pAttrs->get_length(&nCount);

for(int i = 0 ; i < nCount ; i++)

{
pAttrs->get_item(i,&pAttrItem);

//我们可以通过函数get_nodeName,get_nodeTypedValue得到属性名和属性值

//也可以直接得到

CString strAttrName = (char*)(_bstr_t)pAttrItem->nodeName;

CString strAttrValue = (char*)(_bstr_t)pAttrItem->nodeTypedValue;

}

}

 

标签:xml,VC,get,宝典,bstr,MSXML2,pDoc,childNode
From: https://blog.51cto.com/u_15724537/5732457

相关文章

  • Azure DevOps Server 2022新功能:全新的TFVC操作界面
    AzureDevOpsServer(之前名称为TFS)从2013年开始就支持分布式(Git)和集中式(TFVC)两种代码库,近年来由于Git被软件研发团队广泛采纳,集中式代码库(TFVC或SVN)逐渐被开发人员抛弃;但......
  • VC雕虫小技集(五)
    VC雕虫小技集(五)何志丹1,vc中右键点击一个类或宏,可以察看他的定义,但如何返回初始地方呢?installvisualassist,anduseAlt+leftarrow按菜单中的后退(<-转45度)按......
  • VC入门宝典三(String)
    CString何志丹主要内容:1,主要函数的实现2,常用函数3.CString与char[]的相互转换4,将NULL字节放入CString中vc中最主要函数不易理解。CString::CString(c......
  • vc入门宝典七(工具栏)
    工具栏                    何志丹主要内容:1,概要。2,常用函数3,实例。4,动态建立工具条5,在工具栏中嵌控件6,用对话框加位图......
  • vc6.0安装失败解决办法
                                                       ​​何志丹​​---------------------下面的部分是亲身经历安装盘所在目录和安装后......
  • Grafana监控java应用以及vCenter的方法
    Grafana监控java应用以及vCenter的方法背景最开始弄过vCenter的监控.但是发现很多地方已经不合适了.今天看了下jmx监控java的应用.顺便监控了下vCenter.这里简单记......
  • SpringMvc拦截器
                   ......
  • SpringBoot项目的pom.xml文件中maven-project-info-reports-plugin报红解决办法
    今天在创建SpringBoot项目时发现导包是没有任何问题的,但是pom文件中maven-project-info-reports-plugin一直有报红,如下图所示:在该pom文件中引入maven-project-info-repor......
  • Caused by: org.xml.sax.SAXParseException; lineNumber: 11; columnNumber: 106; 对
    给Properties注入值报错<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2......
  • 安装Docker容器时,出现https://yum.dockerproject.org/repo/main/centos/7/repodata/re
    解决办法:首先确定把相应的前置包都安装好,之后操作命令行:执行yum-config-manager--disabledockerrepo命令然后再执行:sudo yum installdocker-cedocker-ce-clicont......