vc读写XML文件

#import "msxml3.dll"
using namespace MSXML2;

void WriteXmlFile()

{
//写文件开始
::CoInitialize(NULL);
MSXML2::IXMLDOMDocumentPtr pDoc;
MSXML2::IXMLDOMElementPtr xmlRoot;
HRESULT hr = pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument30));
if(!SUCCEEDED(hr))
{
return;
}


pDoc->raw_createElement((_bstr_t)(char*)"字幕文件", &xmlRoot);
pDoc->raw_appendChild(xmlRoot,NULL);


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


childNode->Puttext("测试字幕内容1");
childNode->setAttribute("开始时间", "00:00:00");
childNode->setAttribute("结束时间", "00:00:01");
xmlRoot->appendChild(childNode);
pDoc->raw_createElement((_bstr_t)(char*)"字幕", &childNode);
childNode->Puttext("测试字幕内容2");
childNode->setAttribute("开始时间", "00:00:02");
childNode->setAttribute("结束时间", "00:00:03");
xmlRoot->appendChild(childNode);
pDoc->save("e:\\test.xml");


childNode->Release();
xmlRoot->Release();
pDoc->Release();


//写文件结束
}


void ReadXmlFile()
{
::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("e:\\test.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);//获得某个子节点;
CString T3 = (char*)(_bstr_t)XMLNODE->nodeName;
CString T4 = (char*)(_bstr_t)XMLNODE->text;
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);
}

XMLNODES.Release();
XMLNODE.Release();
XMLROOT.Release();
XMLDOC.Release();
/*
IXmlDOMNode对象的常用属性如下。
● nodeName:该属性返回节点名称。
● nodeType:该属性返回节点类型。
● nodeValue:该属性返回节点包含的文本。
● childNodes:该属性返回用IXMLDOMNode对象表示的节点的子节点集。
● firstChild:该属性返回该节点的第一个子节点。
● lastChild:该属性返回该节点的最后一个子节点。
● text:该属性返回IXMLDOMNode对象中的文本。
● Xml:该属性返回IXMLDOMNode对象的XML代码。
*/
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值