xml解析[VC]

#import "msxml4.dll" named_guids
using namespace MSXML2;

 

CoInitialize(NULL);

 

if (FAILED (CoCreateInstance(MSXML2::CLSID_DOMDocument, NULL, CLSCTX_INPROC_SERVER, MSXML2::IID_IXMLDOMDocument, reinterpret_cast<void**>(&m_pXMLDoc))))
  return;

 

if (m_pXMLDoc->load( _bstr_t("DrisionTest.xml") ) == VARIANT_FALSE)
  return;

 

if (SUCCEEDED(m_pXMLDoc->QueryInterface(MSXML2::IID_IXMLDOMNode, reinterpret_cast<void**>(&pNode))))
 {
  MSXML2::IXMLDOMNode *pRoot = NULL;
  MSXML2::IXMLDOMNode *pNext = NULL;
  MSXML2::IXMLDOMNode *pChild = NULL; 
  MSXML2::IXMLDOMNode *pListItem = NULL;
  MSXML2::IXMLDOMNamedNodeMap *pNamedNodeMap = NULL;
  CComVariant nodeVal;
  CComBSTR cValue;
  long listLength;

  // 得到第一项
  pNode->get_firstChild(&pRoot);
  pRoot->get_firstChild(&pChild);
  

  while (pChild && m_TotalPhoneNum < MAX_LINE_COUNT)
  {
   // 得到属性节点
   pChild->get_attributes(&pNamedNodeMap);

   // 属性个数
   // pNamedNodeMap->get_length( &listLength );

 

   // ...

   pNamedNodeMap->get_item(0, &pListItem);
   pListItem->get_nodeValue(&nodeVal);
   cValue.Empty();
   cValue.Append(nodeVal.bstrVal);
   _tcscpy(m_LineInfo[m_TotalPhoneNum].szInnerNO, cValue);
   pListItem->Release();
   pListItem = NULL;

 

   // ...
   pNamedNodeMap->get_item(1, &pListItem);
   pListItem->get_nodeValue(&nodeVal);
   cValue.Empty();
   cValue.Append(nodeVal.bstrVal);
   _tcscpy(m_LineInfo[m_TotalPhoneNum].szOutLine, cValue);
   pListItem->Release();
   pListItem = NULL;
  
   // 释放资源
   pNamedNodeMap->Release();
   pNamedNodeMap = NULL;

   // 得到下一个节点
   pChild->get_nextSibling(&pNext);
   pChild->Release();
   pChild = pNext;

   m_TotalPhoneNum++;
  }

  pNode->Release();
  pNode = NULL;
 } 

 m_pXMLDoc->Release();
 m_pXMLDoc = NULL;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值