#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代码。
*/
}