简单XML文件解析

代码:

#include <MsXml2.h> #include <atlbase.h> #include <atlconv.h> #include <iostream> using namespace std; 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文件:

- <PacketHead Len="610" RemoteIP="455465604" LocalPort="8088" TimeStamp="1282494170" ID="999" Version="3.10.5.20"> - <LogRoot> - <AutoLog> - <Item> <Node>CUpdateThread::UpdateProc/CUpdateThread::CheckVersion</Node> <Log>Get_Storm_ctrl_a.ini</Log> </Item> - <Item> <Node>CUpdateThread::UpdateProc</Node> <Log>Load ECS of server.ecs [s:3.10.8.6 / c:3.10.5.20][osVer:5.1]</Log> </Item> - <Item> <Node>CUpdateThread::UpdateProc/CUpdateThread::MainProc/CExprTree::CheckAndUpdate</Node> <Log>Update State [1] = [ad]</Log> </Item> - <Item> <Node>CUpdateThread::UpdateProc/CUpdateThread::MainProc</Node> <Log>Check Success</Log> </Item> - <Item> <Node>CUpdateThread::UpdateProc</Node> <Log>Update_Thread_End</Log> </Item> </AutoLog> </LogRoot> </PacketHead>

你可能感兴趣的:(thread,c,xml,null)