您的位置:首页 > 其它

简单XML文件解析

2010-11-10 18:37 357 查看
代码:

#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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  xml thread null c