Web services 如何在Delphi2009中显示Html格式的响应?

Web services 如何在Delphi2009中显示Html格式的响应?,web-services,delphi,xhtml,delphi-2009,Web Services,Delphi,Xhtml,Delphi 2009,我通过web服务调用返回这个html字符串 我在显示html时遇到了问题,可能是因为奇怪的格式(请注意开头的括号“”显示为“<;head>;”) 这是我截短的html格式的响应 我试图做的是在表单上显示这个html页面。但当我将字符串写入文件时,我甚至很难打开它 非常感谢您的帮助 谢谢 <?xml version="1.0" encoding="utf-8"?> <string xmlns="http://tempuri.org/">&lt;html&am

我通过web服务调用返回这个html字符串

我在显示html时遇到了问题,可能是因为奇怪的格式(请注意开头的括号“”显示为“<;head>;”)

这是我截短的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>

htmlheadtitle。。。。。。
…html…/div/div/body/html

和是。出于某种原因(可能是为了返回格式错误的html),此web服务(?)返回用and替换的标记括号。若您假设在返回的元素中,并且只用作标记括号,那个么您可以用适当的括号替换实体。如果您不能假设您需要解析字符串元素文本以获得有效的html。

并且是。出于某种原因(可能是为了返回格式错误的html),此web服务(?)返回用and替换的标记括号。若您假设在返回的元素中,并且只用作标记括号,那个么您可以用适当的括号替换实体。如果您不能假设您需要解析字符串元素文本才能获得有效的html。

如果您只是编写代码来处理这个字符串(并且您没有访问检索到它的代码的权限),那么最正确的方法就是使用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;

如果您只是编写代码来处理这个字符串(而您无权访问检索它的代码),那么最正确的方法就是使用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;

谢谢你的意见。这就是我的工作

 uses
 HTTPApp

 var 
 HtmlXmlText : String;

 HtmlText := HTMLDecode(HtmlXmlText);

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

感谢您的输入。这就是我的工作

 uses
 HTTPApp

 var 
 HtmlXmlText : String;

 HtmlText := HTMLDecode(HtmlXmlText);

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

对于写入文件,我通常只使用普通字符串列表(
TStringList
)并将每个字符串添加为新行,然后使用其
SaveToFile
LoadFromFile
函数保存/加载任何平面文本文件。至于加载和显示内容,我不确定你说的格式化是什么意思,但对于实际页面,最快的方法是使用
TWebBrowser
,它使用Internet Explorer的核心。格式化代码的语法完全是另一回事。@LeonardoHerrera,我所做的只是将上面提到的字符串写入html文件,但我没有成功地查看该文件。我只是想知道为什么,因为字符串需要解码HtmlDecode(字符串)。现在它开始工作了。。ThanksTrevor,请编辑您的问题,以提供有关您首先是如何获得HTML的信息,以及您迄今为止尝试了哪些不起作用的内容。另一种选择(因为你似乎已经得到了答案)是将你的解决方案作为你自己问题的答案发布(你甚至可以在短时间延迟后将其标记为已接受的答案)或删除该问题。请不要只是把它贴在这里,一旦找到解决方案就放弃它;这不是设计工作的方式。如果您打算将SO用作资源,请配合正确使用它。谢谢。:-)@KenWhite-这个字符串是通过web服务调用返回给我的。我可以编辑我的问题并添加答案,或者只是删除,因为它可能对任何人都不是很有用。我将编辑我的帖子来反映这一点,希望它现在更有意义。明天我将有时间发布我的答案。您获得了XML,但您是通过Indy直接获得的,还是通过
THTTPRIO
,还是通过其他方法获得的?(这就是为什么我问你如何获取字符串,顺便说一句,以及如何将它分配给字符串变量的代码。)对于写入文件,我通常只使用一个简单的字符串列表(
TStringList
)并将每个字符串添加为新行,然后使用其
SaveToFile
LoadFromFile
函数保存/加载任何平面文本文件。至于加载和显示内容,我不确定你说的格式化是什么意思,但对于实际页面,最快的方法是使用
TWebBrowser
,它使用Internet Explorer的核心。格式化代码的语法完全是另一回事。@LeonardoHerrera,我所做的只是将上面提到的字符串写入html文件,但我没有成功地查看该文件。我只是想知道为什么,因为字符串需要解码HtmlDecode(字符串)。现在它开始工作了。。ThanksTrevor,请编辑您的问题,以提供有关您首先是如何获得HTML的信息,以及您迄今为止尝试了哪些不起作用的内容。另一种选择(因为你似乎已经得到了答案)是将你的解决方案作为你自己问题的答案发布(你甚至可以在短时间延迟后将其标记为已接受的答案)或删除该问题。请不要只是把它贴在这里,一旦找到解决方案就放弃它;这不是设计工作的方式。如果您打算将SO用作资源,请配合正确使用它。谢谢。:-)@KenWhite-这个字符串是通过web服务调用返回给我的。我可以编辑我的问题并添加答案,或者只是删除,因为它可能对任何人都不是很有用。我将编辑我的帖子来反映这一点,希望它现在更有意义。明天我将有时间发布我的答案。您获得了XML,但您是通过Indy直接获得的,还是通过
THTTPRIO
,还是通过其他方法获得的?(这就是为什么我问您如何获得字符串,顺便说一句,以及如何将其分配给字符串变量的代码。)