Cum se afișează un răspuns Html formatat în Delphi 2009?

Am primit acest șir html returnat printr-un apel de serviciu web.

I am having trouble displaying the html probably because of the odd format (notice how the opening brackets "< head >" show up as '< ; head > ;' instead)

Acesta este răspunsul meu trunchiat în formatul html.

Ceea ce încerc să fac este să afișez această pagină html pe un formular. Dar chiar am probleme cu deschiderea când scriu șirul într-un fișier.

Orice ajutor este foarte apreciat,

Mulțumiri

<?xml version="1.0" encoding="utf-8"?>
<html><head><title>......
...html......</div></div></body></html>
0
Pentru scrierea în fișiere, folosesc în mod obișnuit doar o listă de șiruri simple ( TStringList ) și adăugați fiecare șir ca o linie nouă - apoi utilizați codurile SaveToFile și LoadFromFile < code> pentru a salva/încărca orice fișier text plat. În ceea ce privește încărcarea și afișarea conținutului, nu știu ce înseamnă formatare, însă pentru pagina actuală, calea rapidă este de a utiliza un TWebBrowser care utilizează nucleul Internet Explorer. Formatarea sintaxei codului este o altă poveste.
adăugat autor Jerry Dodge, sursa
@LeonardoHerrera, Tot ce am încercat să fac este să scriu șirul menționat mai sus într-un fișier html, dar nu am avut niciun succes în vizualizarea fișierului. Tocmai mi-am dat seama de ce, deoarece șirul trebuie să fie decodat HtmlDecode (șir). Acum lucrul lui .. Multumesc
adăugat autor Trevor, sursa
@KenWhite - Acest șir a fost returnat la mine printr-un apel de serviciu web. Pot sa imi editez intrebarea si sa adaug raspunsul sau sa sterg doar pentru ca nu poate fi foarte util pentru nimeni. Voi edita postarea pentru a reflecta acest lucru, sperăm că are mai mult sens acum. Voi avea timp să postez răspunsul meu mâine.
adăugat autor Trevor, sursa
@KenWhite html-ul din șirul meu a fost interpretat în editorul de text ca html, așa că nu a fost afișat am făcut o editare. Multumesc P.S. Sintaxa html a fost imensă, așa că am comentat cea mai mare parte a acesteia cu ... html ... Dar pot adăuga ceva mai mult dacă ar avea sens.
adăugat autor Trevor, sursa
Trevor, vă rugăm să vă modificați întrebarea pentru a oferi informații despre modul în care obțineți codul HTML în primul rând și despre ceea ce ați încercat până acum, care nu funcționează. Alternativa (deoarece pare să fi primit un răspuns) ar fi fie să vă postați soluția ca răspuns la propria întrebare (puteți chiar să o marcați ca răspuns acceptat după o scurtă întârziere), fie să ștergeți întrebarea. Vă rugăm nu doar postați-l aici și abandonați-l odată ce ați obținut o soluție; nu este modul în care SO este proiectat să funcționeze. Dacă intenționați să utilizați SO ca resursă, vă rugăm
adăugat autor Ken White, sursa
Trevor, mulțumesc. :-) Încă nu știu exact ce primești, totuși; Nu pot să vă spun dacă ați postat un șir de coduri eronate sau dacă ați greșit afișarea codului HTML în marcaj aici. ;-) Veți pierde o mulțime de conținut în mijloc (de exemplu, etichetele de deschidere & lt; div & gt;).
adăugat autor Ken White, sursa
Obțineți XML, dar îl obțineți direct prin Indy sau prin THTTPRIO sau prin altă metodologie? (De aceea am întrebat cum obțineți șirul, BTW și codul care îi atribuie variabilei dvs. de șir.)
adăugat autor Ken White, sursa

3 răspunsuri

< and > are XML and HTML character entities. For some reason (probably to return misformatted html) this web service(?) returns tag brackets <> replaced with < and >. If you assume that in returned element < and > are used only as tag brackets you can just replace entities with proper bracket. If you can't assume that you need to parse string element text to obtain valid html.

1
adăugat

Dacă scrieți doar codul pentru a trata acest șir (și nu aveți acces la codul care la recuperat) atunci cea mai corectă este folosirea unui parser 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;
1
adăugat

Vă mulțumim pentru contribuția dvs. Asta a fost pentru mine.

 uses
 HTTPApp

 var 
 HtmlXmlText : String;

 HtmlText := HTMLDecode(HtmlXmlText);

Am folosit HTMLDecode pentru a curăța caracterele impare la formatarea standard.

0
adăugat