1. 程式人生 > >vc操作html的幾類處理

vc操作html的幾類處理

<img>

<table>

<tr>

<td  地址>姓名

<td>

<span>

<span>

<span>

對於類似上面結構的幾類處理方法:

1. 清空html.
BOOL ClearHtml() //清空html裡面的內容

CComPtr<IHTMLDocument2> pDoc( NULL );

if( !SUCCEEDED( GetDHtmlDocument( &pDoc ) ) ) 

return FALSE; 

CComPtr<IHTMLElement> pElemBody( NULL ); 

if( pDoc )

{

if( !SUCCEEDED( pDoc->get_body( &pElemBody ) ) ) 

return FALSE; 

}

else

{

return FALSE;

}

CComQIPtr<IHTMLDOMNode> pNode = pElemBody; 

if (pNode)

CComPtr<IHTMLDOMNode> pchildNode = NULL; 

CComPtr<IHTMLDOMNode> pLchildNode = NULL; 

while(SUCCEEDED(pNode->get_firstChild(&pchildNode))) 

HRESULT hr = pNode->removeChild(pchildNode, &pLchildNode); 

pchildNode = NULL; 

pLchildNode = NULL; 

if(FAILED(hr)) 

break; 

}             

return FALSE; 

}

2. 刪除指定記錄

BOOL CWndHtmlList::DeleteCommRecord( BOOL bFlags )

{

//首先是刪除介面顯示

BSTR bstr;

CComPtr<IHTMLDocument2> pDoc( NULL );

IHTMLElement* pHtmlElement;

if( !SUCCEEDED( GetDHtmlDocument( &pDoc ) ) ) 

return FALSE; 

}

CComPtr<IHTMLElement> pElemBody( NULL ); 

if( pDoc )

{

if( !SUCCEEDED( pDoc->get_body( &pElemBody ) ) ) 

return FALSE; 

}

else

{

return FALSE;

}

CComQIPtr<IHTMLDOMNode> pNode = pElemBody; 

if (pNode)

CComPtr<IHTMLDOMNode> pchildNode = NULL; 

CComPtr<IHTMLDOMNode> pLchildNode = NULL;

CComPtr<IHTMLDOMNode>  pItemNode = NULL;

HRESULT hr = pNode->get_firstChild( &pchildNode );

while( SUCCEEDED( hr ) ) 

IDispatch* pDispatch;

IHTMLElementCollection* pHtmlCollection = NULL;

CComPtr<IHTMLElement> spElement = NULL;

//div

pchildNode->QueryInterface( &spElement );

spElement->get_innerHTML( &bstr );

spElement->get_children( &pDispatch );

pDispatch->QueryInterface( IID_IHTMLElementCollection,( void **)&pHtmlCollection );

VARIANT va;  

va.vt = VT_I4;///指明整型資料 

va.lVal = 1; ///賦值 

pHtmlCollection->item( va,va,&pDispatch );

pDispatch->QueryInterface( IID_IHTMLElement,(void **)&pHtmlElement );

//table

pHtmlElement->get_innerHTML( &bstr );

//獲取下一個

pHtmlElement->get_children( &pDispatch );

pDispatch->QueryInterface( IID_IHTMLElementCollection,( void **)&pHtmlCollection );

va.vt = VT_I4;///指明整型資料 

va.lVal = 0; ///賦值 

pHtmlCollection->item( va,va,&pDispatch );

pDispatch->QueryInterface( IID_IHTMLElement,(void **)&pHtmlElement );

//tr

pHtmlElement->get_innerHTML( &bstr );

//獲取下一個

pHtmlElement->get_children( &pDispatch );

pDispatch->QueryInterface( IID_IHTMLElementCollection,( void **)&pHtmlCollection );

va.vt = VT_I4;///指明整型資料 

va.lVal = 0; ///賦值 

pHtmlCollection->item( va,va,&pDispatch );

pDispatch->QueryInterface( IID_IHTMLElement,(void **)&pHtmlElement );

//td

pHtmlElement->get_innerHTML( &bstr );

//獲取下一個

pHtmlElement->get_children( &pDispatch );

pDispatch->QueryInterface( IID_IHTMLElementCollection,( void **)&pHtmlCollection );

va.vt = VT_I4;///指明整型資料 

va.lVal = 0; ///賦值 

pHtmlCollection->item( va,va,&pDispatch );

pDispatch->QueryInterface( IID_IHTMLElement,(void **)&pHtmlElement );

//

pHtmlElement->get_innerHTML( &bstr );

CComVariant varint(NULL);

if( SUCCEEDED( pHtmlElement->getAttribute( L"itemData", 0, &varint ) ) )

{

RECORD* record  = (RECORD*)(LONG_PTR)_wtol( varint.bstrVal );

if ( record->strRecordID == recTemp.strRecordID )

{

HRESULT hr = pNode->removeChild(pchildNode, &pLchildNode); 

  pchildNode = NULL; 

  pLchildNode = NULL; 

if(FAILED(hr)) 

  break;

break;

}

}

//注意下面這條語句

pItemNode = NULL;

hr = pchildNode->get_nextSibling( &pItemNode );

if ( pItemNode )

{

pchildNode = pItemNode;

}

else

{

break;

}

}//while      

}

return TRUE;

}