网上很多把HTML转换成纯文本格式的方法很多思路都是用正则表达式或者分析html代码替换的方法。
本文是利用IE完成转换,即利用IHTMLDocument2接口。
- uses
- MSHTML, ActiveX, OleCtrls, Variants, SysUtils;
- function HtmlToText(HtmlText: WideString): WideString;
- implementation
- function HtmlToText(HtmlText: WideString): WideString;
- var
- V: OleVariant;
- Document: IHTMLDocument2;
- begin
- Result := HtmlText;
- if HtmlText = '' then Exit;
- CoInitialize(nil);
- Document := CoHTMLDocument.Create as IHtmlDocument2;
- try
- V := VarArrayCreate([0, 0], varVariant);
- V[0] := HtmlText;
- Document.Write(PSafeArray(TVarData(v).VArray));
- Document.Close;
- Result := Trim(Document.body.outerText);
- finally
- Document := nil;
- CoUninitialize;
- end;
- end;
- initialization
- OleInitialize(nil);
- finalization
- OleUninitialize;
注意:IHtmlDocument2如果在线程内部用,在构造函数生成IHtmlDocument2一个接口,容易出现mshtml.dll和ntdll.dll错误,此错误不是每次发生。
本文介绍了一种利用IE的IHTMLDocument2接口将HTML转换为纯文本的方法,通过CoHTMLDocument.Create创建接口,然后写入HTML内容,关闭并获取body的outerText实现转换。这种方法避免了使用正则表达式或直接分析HTML代码。需要注意的是,在线程内部使用IHtmlDocument2时可能会遇到mshtml.dll和ntdll.dll错误,但该错误不一定会每次都出现。
482

被折叠的 条评论
为什么被折叠?



