有一段HTML文本如何载入HTMLDocument2进行解析?
CComPtr<IHTMLDocument>pDoc;
CComPtr<IHTMLDocument2>pDoc2;
bstr=NULL;
CComPtr<IHTMLElement>pElement;
::OleInitialize(NULL);
HRESULT hr=pDoc.CoCreateInstance(__uuidof(HTMLDocument), NULL,
CLSCTX_INPROC_SERVER);
if(!SUCCEEDED(hr))
{
AfxMessageBox("無法創建HTML對象,請檢查是否安裝了MS XML運行庫!");
}
hr==pDoc->QueryInterface(IID_IHTMLDocument2,(LPVOID *)&pDoc2);
if(!SUCCEEDED(hr))
{
AfxMessageBox("派生IHTMLDocument2失败!");
}
pDoc2->get_body(&pElement);//获得的 pElement为空要不可以
pElement->put_innerHTML(bstr)//载入自己的内容bstr
问题点数:100、回复次数:9Top
1 楼jacklzw88(不可爱咯)回复于 2006-06-01 17:56:42 得分 0
HTML文本载入HTMLDocument2进行解析?
你要实现的功能是?Top
2 楼anlun(伦)回复于 2006-06-01 19:41:57 得分 0
提取自己感兴趣的信息Top
3 楼lion_wing(凤之焚-业与情的纠缠,死而复生的蜕变!)回复于 2006-06-01 21:30:24 得分 0
把文本装入HTMLDocument2好像不太可能。
你可以用正则表达式进行分析。Top
4 楼jacklzw88(不可爱咯)回复于 2006-06-02 09:25:26 得分 0
那你可以看看杨老师的文章
http://www.vckbase.com/document/viewdoc/?id=1446Top
5 楼sunmz_wjxy(孙大圣)回复于 2006-06-13 14:22:56 得分 0
个人感觉杨老师的这篇文章写得还不错.
楼主可以看一下.Top
6 楼msstbc()回复于 2006-06-19 07:51:08 得分 0
不知道楼主的问题解决了没有,我也遇到了相同的问题啊。
杨老师的文章看了,可是,怎么都实现不了用对字符串的操作。Top
7 楼seasol(海子@CSDN助手:http://www.cuteie.com/other.asp)回复于 2006-06-20 11:46:16 得分 60
建立CComPtr<IHTMLDocument2>pDoc2;就不抄了。
此时,pDoc2指向的文档是空的,get_body肯定返回空元素。
这时,可以open打开一个空文档,然后通过write将字符串写入文档,最后close,关闭文档。
如下:
//open文档
CComVariant vName="_self";
CComVariant vEmpty;
hr=pDoc2->open(L"about:blank",vName,vEmpty,vEmpty,NULL);
//构造参数,准备write
LPCWSTR szwTest=L"<p>这是一个测试</p>";
BSTR bstr = SysAllocString(szwTest);
VARIANT *param;
SAFEARRAY *sfArray;
// Creates a new one-dimensional array
sfArray = SafeArrayCreateVector(VT_VARIANT, 0, 1);
hr = SafeArrayAccessData(sfArray,(LPVOID*) & param);
param->vt = VT_BSTR;
param->bstrVal = bstr;
hr = SafeArrayUnaccessData(sfArray);
//write文档
hr=pDoc2->write(sfArray);
//close文档
hr=pDoc2->close();
///////////////以下检测是否写入成功。
pDoc2->get_body(&pElement);//
CComBSTR bstrTest;
pElement->get_innerHTML(&bstrTest);
=======================================
愤怒以愚蠢开始,以后悔告终。——毕达哥拉斯
CSDN助手 签名走马灯Top
8 楼goodboyws(深夜不眠者(VCMVP))回复于 2006-07-05 14:35:18 得分 40
#include <windows.h>
#define INITGUID
#include <initguid.h>
#include <exdisp.h>
#include <shlguid.h>
#include <memory.h>
#include <shlobj.h>
HRESULT hr;
IWebBrowser2* pWebBrowser = NULL;
if (FAILED(OleInitialize(NULL)))
{
return;
}
// Instantiate a browser
if (FAILED(hr = CoCreateInstance(CLSID_InternetExplorer,
NULL, CLSCTX_SERVER, IID_IWebBrowser2,
(LPVOID*)&pWebBrowser)))
{
goto Error;
}
// Show the browser, and navigate to the special location
// represented by the pidl
hr = pWebBrowser->put_Visible(VARIANT_TRUE);
IDispatch* pDocDisp = NULL;
hr = pWebBrowser->get_Document(&pDocDisp);
if (pDocDisp)
{
IHTMLDocument2* pDoc = NULL;
hr = pDocDisp->QueryInterface(IID_IHTMLDocument2, reinterpret_cast<void **>(&pDoc));
IHTMLElement* pElement = NULL;
hr = pDoc->get_body(&pElement);
CString strHtmlText = lpData;//这里传入你要解析的文本
BSTR bstrHTMLText = strHtmlText.AllocSysString();
hr = pElement ->put_outerHTML(&bstrHTMLText);Top
9 楼Viper()回复于 2007-02-27 11:41:31 得分 0
markTop




