CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  HTML/XML

关于用 IE 接口 解析HTML 文件的问题

楼主vicky_jam(★天使亲蛙☆)2005-03-16 20:54:58 在 VC/MFC / HTML/XML 提问

大家好  
  我想解析一份本地的HTML   文件     截取他的   URL   链接  
  实现效果:   (和   在IE   中   右击     点   用**下载全部链接   相同)     得到链接名   和链接  
   
  我用的是VC  
  我不想在上面增加一个   CHtmlView   ,把它打开,   再解析   。  
  我只是想把它   以文件的形式   打开、   读取   再直接解析。  
  谢谢大家~ 问题点数:50、回复次数:5Top

1 楼newkey007(无限天空 www.xDrv.com)回复于 2005-03-16 21:01:35 得分 50

HANDLE   hFile   =   CreateFile("D:\\XDrv\\LocalData\\Info\\公司股本结构.htm",   GENERIC_READ,    
  FILE_SHARE_READ   |   FILE_SHARE_WRITE,    
  NULL,   OPEN_EXISTING,   FILE_ATTRIBUTE_NORMAL,  
  NULL);  
   
  if   (INVALID_HANDLE_VALUE   ==   hFile)  
  {  
  //return   HRESULT_FROM_WIN32(GetLastError());  
  return   ;  
  }  
   
  HRESULT hResult   =   E_FAIL;  
   
  DWORD   dwRead   =   0;  
  DWORD   dwFileSize   =   GetFileSize(hFile,   NULL);   //   No   HiOrder   DWORD   required  
  char*   pszHtmlText   =   (char*)_alloca(dwFileSize   +   1);  
  if   (ReadFile(hFile,   pszHtmlText,   dwFileSize,   &dwRead,   NULL)   ==   0)  
  {  
  //ATLTRACE2(atlTraceRegistrar,   0,   "Read   Failed   on   file%s\n",   OLE2CT(bstrFileName));  
  hResult   =     HRESULT_FROM_WIN32(GetLastError());  
  }  
   
  CloseHandle(hFile);  
   
  CComBSTR   bstrHtmlText   =   pszHtmlText;  
  //  
  // if   (SUCCEEDED(hResult))  
  {  
  // pszHtmlText[dwRead]   =   NULL;  
  // LPTSTR   szConverted   =   A2T(pszHtmlText);  
  // ATLTRACE(szConverted);  
   
   
  }  
  //  
  //////////////////////////////////////////////////////////////////////////  
  IHTMLDocument2   *pDoc   =   NULL;  
  CoCreateInstance(CLSID_HTMLDocument,    
        NULL,    
        CLSCTX_INPROC_SERVER,    
        IID_IHTMLDocument2,    
        (LPVOID   *)   &pDoc);  
   
  if   (pDoc)  
  {  
  IPersistStreamInit   *pPersist   =   NULL;  
  pDoc->QueryInterface(IID_IPersistStreamInit,    
        (LPVOID   *)   &pPersist);  
  if   (pPersist)  
  {  
      IMarkupServices   *pMS   =   NULL;  
       
      pPersist->InitNew();  
      pPersist->Release();  
   
      pDoc->QueryInterface(IID_IMarkupServices,    
      (LPVOID   *)   &pMS);  
      if   (pMS)  
      {  
  IMarkupContainer   *pMC   =   NULL;  
  IMarkupPointer   *pMkStart   =   NULL;  
  IMarkupPointer   *pMkFinish   =   NULL;  
   
  pMS->CreateMarkupPointer(&pMkStart);  
  pMS->CreateMarkupPointer(&pMkFinish);  
   
  pMS->ParseString(bstrHtmlText,    
    0,    
    &pMC,    
    pMkStart,    
    pMkFinish);  
   
  if   (pMC)  
  {  
      IHTMLDocument2   *pNewDoc   =   NULL;  
      pMC->QueryInterface(IID_IHTMLDocument,    
      (LPVOID   *)   &pNewDoc);  
   
      if   (pNewDoc)  
      {  
  //   do   anything   with   pNewDoc,   in   this   case    
  //   get   the   body   innerText.  
   
       
  //IHTMLElement   *pBody;  
  //pNewDoc->get_body(&pBody);  
   
  //if   (pBody)  
  {  
      //BSTR   strText;  
   
      //pBody->get_innerText(&strText);  
      //pBody->Release();  
   
      //SysFreeString(strText);  
  }  
   
   
      IHTMLElement   *pHtmlGrid   =   NULL;  
      GetElementByID(pNewDoc,   CComBSTR("DataGrid"),   &pHtmlGrid);  
   
      CComQIPtr<IHTMLTable2>   spGridTable   =   pHtmlGrid;  
   
      if   (spGridTable)  
      {  
  BSTR   strText=NULL;  
  CComPtr<IHTMLElementCollection>   pCellCollection;  
   
  spGridTable->get_cells(&pCellCollection);  
   
  SysFreeString(strText);  
      }  
   
  pNewDoc->Release();  
      }  
   
      pMC->Release();  
  }  
   
  if   (pMkStart)  
  pMkStart->Release();  
   
  if   (pMkFinish)  
      pMkFinish->Release();  
   
  pMS->Release();  
      }  
  }  
   
  pDoc->Release();  
      }Top

2 楼vicky_jam(★天使亲蛙☆)回复于 2005-03-17 09:41:46 得分 0

看了半天  
  调了半天  
  搜了半天  
   
  还是没有   调通~~  
   
  知道   这段代码   一定可以    
  只因我是菜鸟    
  唉   ~   样样事情都要   “饭来张口   ”  
  求大哥   给个   全的   让我分析分析      
  好事做到底啊:)  
  Top

3 楼vicky_jam(★天使亲蛙☆)回复于 2005-03-18 06:46:30 得分 0

谢谢了   大哥:)  
  Top

4 楼vicky_jam(★天使亲蛙☆)回复于 2005-03-18 06:52:21 得分 0

晕~~  
  提交出问题了~  
   
  到这里   领分:)  
  http://community.csdn.net/Expert/topic/3860/3860388.xml?temp=9.699649E-02Top

5 楼horisly(SUN YAT-SEN UNIVERSITY (逸仙先生))回复于 2005-07-29 03:46:23 得分 0

markTop

相关问题

  • IE编程:如何从接口IShellBrowser得到当前HTML文件名?
  • .NET里怎样解析Html
  • 请问如何才能让IE浏览器正确解析HTML代码中的URL????????
  • Ie接口编程的错误!
  • IE中对localhost不能解析?
  • ie,firefox中解析xsl的问题
  • 听说有个IE的接口可以分析HTML文件,谁能给我个com原型吗?给个资料链接也行.谢谢.
  • 解析HTML的增强标记(转)
  • 如何解析html头部分格式
  • java如何解析html文档呢

关键词

  • win32
  • 文件
  • release
  • null
  • pszhtmltext
  • 解析
  • spgridtable
  • hfile
  • dwread
  • dwfilesize

得分解答快速导航

  • 帖主:vicky_jam
  • newkey007

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo