Delphi把HTML转换成纯文本格式

本文介绍了一种利用IE的IHTMLDocument2接口将HTML转换为纯文本的方法,通过CoHTMLDocument.Create创建接口,然后写入HTML内容,关闭并获取body的outerText实现转换。这种方法避免了使用正则表达式或直接分析HTML代码。需要注意的是,在线程内部使用IHtmlDocument2时可能会遇到mshtml.dll和ntdll.dll错误,但该错误不一定会每次都出现。

 网上很多把HTML转换成纯文本格式的方法很多思路都是用正则表达式或者分析html代码替换的方法。

本文是利用IE完成转换,即利用IHTMLDocument2接口。

  1. uses
  2.   MSHTML, ActiveX, OleCtrls, Variants,  SysUtils;
  3.   function HtmlToText(HtmlText: WideString): WideString;
  4. implementation
  5. function HtmlToText(HtmlText: WideString): WideString;
  6. var
  7.   V: OleVariant;
  8.   Document: IHTMLDocument2;
  9. begin
  10.   Result := HtmlText;
  11.   if HtmlText = '' then Exit;
  12.   CoInitialize(nil);
  13.   Document := CoHTMLDocument.Create  as IHtmlDocument2;
  14.   try
  15.     V := VarArrayCreate([00], varVariant);
  16.     V[0] := HtmlText;
  17.     Document.Write(PSafeArray(TVarData(v).VArray));
  18.     Document.Close;
  19.     Result := Trim(Document.body.outerText);
  20.   finally
  21.     Document := nil;
  22.     CoUninitialize;
  23.   end;
  24. end;
  25. initialization
  26.   OleInitialize(nil);
  27. finalization
  28.   OleUninitialize;

 

注意:IHtmlDocument2如果在线程内部用,在构造函数生成IHtmlDocument2一个接口,容易出现mshtml.dll和ntdll.dll错误,此错误不是每次发生。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值