网上提供的一些方法比较简单,无法适应XML文件的动态变化 ,没办法只能自己查文档写,总算没浪费时间,用的时候别忘了加#import "msxml4.dll"这个动态链接库网上很好找,自己找一下,希望能帮助需要的朋友,困了
::CoInitialize(NULL); //初始化COM
MSXML2::IXMLDOMDocumentPtr pDoc;
MSXML2::IXMLDOMElementPtr xmlRoot;
HRESULT hr = pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument30));
if(!SUCCEEDED(hr))
{
return ;
}
pDoc->load(".//PortControlStrategy.xml");
MSXML2::IXMLDOMElementPtr childNode;
childNode = (MSXML2::IXMLDOMElementPtr)(pDoc->selectSingleNode("//StrategyGroup"));
MSXML2::IXMLDOMNodePtr nextNode = NULL;
MSXML2::IXMLDOMNodeListPtr childNodeList;
do{
if(nextNode)
childNode = (MSXML2::IXMLDOMElementPtr)nextNode;
MSXML2::IXMLDOMNodePtr NodeName;
CString strAttrValue;
childNode->get_childNodes(&childNodeList);// 得到所有子节点列表
for (int i=2; i<11;++i)
{
childNodeList->get_item(i,&NodeName);
strAttrValue = (char*)(_bstr_t)NodeName->nodeTypedValue;
}
childNodeList->get_item(15,&NodeName);
strAttrValue = (char*)(_bstr_t)NodeName->nodeTypedValue;
childNodeList->get_item(16,&NodeName);
strAttrValue = (char*)(_bstr_t)NodeName->nodeTypedValue;
childNodeList->get_item(17,&NodeName);
strAttrValue = (char*)(_bstr_t)NodeName->nodeTypedValue;
}
while (0 == childNode->get_nextSibling(&nextNode));//获取下一个成员
::CoUninitialize();
//xml 文件格式如下
<?xml version="1.0" encoding="gb2312"?>
<PortControlStrategy>
<StrategyGroup>
<StraGroupNO>9</StraGroupNO>
<StraGroupNm>234</StraGroupNm>
<OperType>0</OperType>
<StartTime1>00:00:00</StartTime1>
<EndTime1>00:00:00</EndTime1>
<StartTime2>00:00:00</StartTime2>
<EndTime2>00:00:00</EndTime2>
<StartTime3>00:00:00</StartTime3>
<EndTime3>00:00:00</EndTime3>
<FullDay>1</FullDay>
<ProtocolType>1</ProtocolType>
<UpdateTime>2009-12-14 13:38:02</UpdateTime>
<AlarmFlag>0</AlarmFlag>
<Warn_Locked>0</Warn_Locked>
<SGEndtime>2009-12-14 13:38:02</SGEndtime>
<RemotePort>234-30999,23</RemotePort>
<LocalPort>234,23</LocalPort>
<IP>234,23</IP>
</StrategyGroup>
<StrategyGroup>
<StraGroupNO>0</StraGroupNO>
<StraGroupNm>234</StraGroupNm>
<OperType>0</OperType>
<StartTime1>00:00:00</StartTime1>
<EndTime1>00:00:00</EndTime1>
<StartTime2>00:00:00</StartTime2>
<EndTime2>00:00:00</EndTime2>
<StartTime3>00:00:00</StartTime3>
<EndTime3>00:00:00</EndTime3>
<FullDay>1</FullDay>
<ProtocolType>2</ProtocolType>
<UpdateTime>2009-12-14 13:38:02</UpdateTime>
<AlarmFlag>0</AlarmFlag>
<Warn_Locked>0</Warn_Locked>
<SGEndtime>2009-12-14 13:38:02</SGEndtime>
<RemotePort>13-45,1-2,7-8</RemotePort>
<LocalPort>12-22,1-2,78-79</LocalPort>
<IP>1-2,7-8</IP>
</StrategyGroup>
<StrategyGroup>
<StraGroupNO>9</StraGroupNO>
<StraGroupNm>1</StraGroupNm>
<OperType>0</OperType>
<StartTime1>00:00:00</StartTime1>
<EndTime1>00:00:00</EndTime1>
<StartTime2>00:00:00</StartTime2>
<EndTime2>00:00:00</EndTime2>
<StartTime3>00:00:00</StartTime3>
<EndTime3>00:00:00</EndTime3>
<FullDay>1</FullDay>
<ProtocolType>2</ProtocolType>
<UpdateTime>2009-12-14 13:38:02</UpdateTime>
<AlarmFlag>0</AlarmFlag>
<Warn_Locked>0</Warn_Locked>
<SGEndtime>2009-12-14 13:38:02</SGEndtime>
<RemotePort>1,12-15</RemotePort>
<LocalPort>1,2-3</LocalPort>
<IP>192.168.0.1,192.168.0.100-192.168.0.120</IP>
</StrategyGroup>
</PortControlStrategy>