如何在delphi 2009中显示Html格式的响应?

时间:2012-05-29 17:52:32

标签: web-services delphi xhtml delphi-2009

我收到通过网络服务电话返回的这个html字符串。

我在显示html时遇到了麻烦,可能是因为奇怪的格式(请注意开头括号“< head>”如何显示为'& lt; head& gt;'而不是

这是我截断的html格式化响应。

我要做的是在表单上显示此html页面。但是当我将字符串写入文件时,我甚至无法打开它。

非常感谢任何帮助,

由于

<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://tempuri.org/">&lt;html&gt;&lt;head&gt;&lt;title&gt;......
...html......&lt;/div&gt;&lt;/div&gt;&lt;/body&gt;&lt;/html&gt;</string>

3 个答案:

答案 0 :(得分:1)

&安培; LT;和&amp; gt;是XML and HTML character entities。由于某种原因(可能返回格式错误的html),此Web服务(?)返回标记括号&lt;&gt;替换为&amp; lt;和&amp; gt;。如果您假设在返回的&lt; string&gt;&lt; / string&gt;中元素&amp; lt;和&amp; gt;仅用作标记括号,您可以使用适当的括号替换实体。如果你不能假设你需要解析字符串元素文本来获得有效的html。

答案 1 :(得分:1)

如果您只是编写代码来处理此字符串(并且您无法访问检索它的代码),那么最正确的方法是使用XML解析器。

uses XmlIntf;

procedure blah;
var
    doc: IXMLDocument;
    HtmlText: String;
begin
    doc := CreateXMLDocument;
    doc.LoadFromFile(...);
    HtmlText := doc.documentElement.InnerText;
    // Your text is already decoded here
    DoWhatever(HtmlText);
end;

答案 2 :(得分:0)

感谢您的投入。这对我有用。

 uses
 HTTPApp

 var 
 HtmlXmlText : String;

 HtmlText := HTMLDecode(HtmlXmlText);

我使用HTMLDecode将奇数字符清理为标准格式。