2012-05-29 66 views
0

我得到这个通过web服务调用返回的html字符串。如何在delphi 2009中显示Html格式的响应?

我无法显示HTML可能是因为奇格式(注意开括号“<头>”如何显示为“& LT;头& 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> 
+0

对于写入文件,我通常只使用一个普通的字符串列表('TStringList')并将每个字符串添加为一个新行 - 然后使用其SaveToFile和LoadFromFile函数保存/加载任何平面文本文件。至于加载和显示内容,我不确定你的意思是格式化的,但对于实际页面,最快捷的方法是使用一个使用Internet Explorer核心的TWebBrowser。格式化代码的语法是另一回事。 –

+0

@LeonardoHerrera,所有我试图做的是将上述字符串写入html文件,但我没有任何成功查看该文件。我只是想出了为什么,因为字符串需要解码HtmlDecode(字符串)。现在它的工作..感谢 – Trevor

+1

特雷弗,请编辑您的问题,提供有关如何获得HTML的信息,以及你迄今为止尝试过的不起作用的信息。另一种方法(因为你似乎已经得到了答案)将要么发布你的解决方案作为你自己的问题的答案(你甚至可以在短暂的延迟后将其标记为接受的答案)或删除问题。请不要将它张贴在这里,一旦得到解决方案就放弃它;这不是它设计工作的方式。如果您打算使用SO作为资源,请合作正确使用它。谢谢。 :-) –

回答

0

感谢您的输入。这对我来说很有用。

uses 
HTTPApp 

var 
HtmlXmlText : String; 

HtmlText := HTMLDecode(HtmlXmlText); 

我用HTMLDecode清理奇怪的字符为标准格式。

1

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

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;