代码:
void main(int argc,char*argv[])
{
if(FAILED(CoInitialize(NULL)))
{
cout<<"fail to initialize com."<<endl;
return;
}
CComPtr<IXMLDOMDocument> spDoc;
spDoc.CoCreateInstance(__uuidof(DOMDocument));
VARIANT_BOOL bResult = FALSE;
USES_CONVERSION;
LPTSTR lpwFileName = TEXT("test.xml");
CComVariant varFileName;
varFileName = T2OLE(lpwFileName);
spDoc->load(varFileName,&bResult);
CComPtr<IXMLDOMNodeList> spNodeList;
spDoc->getElementsByTagName(L"PacketHead/LogRoot/AutoLog/Item",&spNodeList);
long lLen = 0;
spNodeList->get_length(&lLen);
for (long i=0;i<lLen;i++)
{
CComPtr<IXMLDOMNode> spDOMNode;
spNodeList->get_item(i,&spDOMNode);
CComPtr<IXMLDOMNodeList> spSubNodeList;
spDOMNode->get_childNodes(&spSubNodeList);
long lSubLen = 0;
spSubNodeList->get_length(&lSubLen);
for(int j=0;j<lSubLen;j++)
{
CComPtr<IXMLDOMNode> spSubNode;
spNodeList->get_item(j,&spSubNode);
CComVariant varValue;
spSubNode->get_nodeTypedValue(&varValue);
if(0 == j) cout<<"Node:"<<endl;
else if(1 == j) cout<<"Log:"<<endl;
spSubNode.Release();
}
spSubNodeList.Release();
spDOMNode.Release();
}
spNodeList.Release();
spDoc.Release();
CoUninitialize();
}
XML文件: