//------------------------------------------------------------------------- // Function Name :GetCount // Parameter(s) :void // Return :LONG // Memo : //------------------------------------------------------------------------- LONG CXmlNodes::GetCount(void) { ASSERT( m_pNodeList != NULL ); LONG lCount = 0l; HRESULT hr = S_OK; MSXML2::DOMNodeType NodeType; MSXML2::IXMLDOMNodePtr pNode = NULL; for( int i = 0; i < m_pNodeList->length; i++) { pNode = m_pNodeList->item[i]; hr = pNode->get_nodeType(&NodeType); ASSERT( SUCCEEDED(hr) ); if( NodeType == MSXML2::NODE_ELEMENT ) { lCount ++; } SAFE_RELEASE(pNode); } return lCount; }
//------------------------------------------------------------------------- // Function Name :GetItem // Parameter(s) :LONG nIndex // Return :CXmlNodePtr // Memo : //------------------------------------------------------------------------- CXmlNodePtr CXmlNodes::GetItem( LONG nIndex ) { ASSERT( nIndex >= 0 && nIndex < GetCount() ); LONG lCount = 0l; HRESULT hr = S_OK; MSXML2::DOMNodeType NodeType; MSXML2::IXMLDOMNodePtr pItem = NULL; CXmlNodePtr pNode ( new CXmlNode() ); for( int i = 0; i < m_pNodeList->length; i++) { pItem = m_pNodeList->item[i]; hr = pItem->get_nodeType(&NodeType); ASSERT( SUCCEEDED(hr) ); if( NodeType == MSXML2::NODE_ELEMENT ) { if( lCount == nIndex ) { pNode->m_pNode = pItem; SAFE_RELEASE(pItem); return pNode; } lCount ++; } SAFE_RELEASE(pItem); } return pNode; }