60 lines
1.2 KiB
C++
60 lines
1.2 KiB
C++
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
|
|
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
|
|
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
|
|
// PARTICULAR PURPOSE.
|
|
//
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
|
|
#include "StdAfx.h"
|
|
#include "XMLDocument.h"
|
|
|
|
using namespace std;
|
|
|
|
CXmlNodeList::CXmlNodeList(IXMLDOMNodeList* pChildNodes)
|
|
{
|
|
//
|
|
// Store the pointer and take a reference
|
|
//
|
|
m_pChildNodes = pChildNodes;
|
|
m_pChildNodes->AddRef();
|
|
}
|
|
|
|
CXmlNodeList::~CXmlNodeList()
|
|
{
|
|
if (NULL != m_pChildNodes)
|
|
{
|
|
m_pChildNodes->Release();
|
|
m_pChildNodes = NULL;
|
|
}
|
|
}
|
|
|
|
int CXmlNodeList::Count()
|
|
{
|
|
long nNodes = 0;
|
|
(void)m_pChildNodes->get_length(&nNodes);
|
|
|
|
return nNodes;
|
|
}
|
|
|
|
CXmlNode* CXmlNodeList::GetNode(long index)
|
|
{
|
|
HRESULT hr = S_OK;
|
|
CXmlNode *pXmlNode = NULL;
|
|
IXMLDOMNode *pNode = NULL;
|
|
|
|
hr = m_pChildNodes->get_item(index, &pNode);
|
|
if (SUCCEEDED(hr))
|
|
{
|
|
pXmlNode = new CXmlNode(pNode);
|
|
|
|
//
|
|
// Release the DOM Node
|
|
//
|
|
pNode->Release();
|
|
pNode = NULL;
|
|
}
|
|
|
|
return pXmlNode;
|
|
}
|
|
|