关于如何使用vc6.0读取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; 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值