@MitjaStachowiak danke für die Anregung, wegen des Lerneffekts werde ich da wahrscheinlich nochmal drauf zurückkommen.
@gocher danke genau das habe ich gesucht.
Es klappt auch schon fast optimal:
Code: Alles auswählen
uses ...DOM_HTML, sax_html ...
.
.
.
procedure TForm1.Button1Click(Sender: TObject);
Var
S : TStringStream;
HTMLDoc: THTMLDocument;
i: Integer;
TmpList: TStringList;
begin
S:= TStringStream.Create('');
TmpList:= TStringList.Create;
HTMLDoc := THTMLDocument.Create();
Try
Memo1.Lines.SaveToStream(S);
S.Position:=0;
//ReadHTMLFile(HTMLDoc,S); //Aus Stream laden
ReadHTMLFile(HTMLDoc,'\index.html'); //Aus Datei laden
//Text aus HTML extrahieren
with HTMLDoc.DocumentElement.ChildNodes do
for i:= 0 to (Count - 1) do
if Item[i] <> nil then
TmpList.Add(utf8encode(Item[i].TextContent)); //Text in Stringliste (je nach bedarf...)
//Ausgabe
Memo2.Lines.Assign(TmpList);
Finally
FreeAndNil(S);
FreeAndNil(HTMLDoc);
FreeAndNil(TmpList);
end;
end;
Html-Datei:
Code: Alles auswählen
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<title>text-align</title>
</head><body>
<p style="text-align:left; margin-left:50px; margin-right:50px">Der Absatz, den Sie gerade lesen, wurde mit <b>text-align</b> linksbündig ausgerichtet. Ferner wurde ein Rand von 50px eingestellt, just for fun oder auch, damit Sie ein Gefühl für die Prioritäten zwischen den einzelnen Stylesheet-Angaben bekommen.<br>
Noch eine Textzeile<br>
Noch eine Textzeile</p>
<p style="text-align:right; margin-left:0px; margin-right:50px">Der Absatz, den Sie gerade lesen, wurde mit <b>text-align</b> rechtsbündig ausgerichtet. Ferner wurde ein Rand von 50px eingestellt, just for fun oder auch, damit Sie sehen, wie die einzelnen Stylesheet-Angaben zusammenspielen.<br>
Noch eine Textzeile<br>
Noch eine Textzeile</p>
<p style="text-align:center; margin-left:50px; margin-right:50px">Der Absatz, den Sie gerade lesen, wurde mit <b>text-align</b> zentriert ausgerichtet. Ferner wurde ein Rand von 50px eingestellt, just for fun oder auch, damit Sie sehen, wie die einzelnen Stylesheet-Angaben zusammenspielen.<br>
Noch eine Textzeile<br>
Noch eine Textzeile</p>
</body>
</html>
Ausgabe:
Code: Alles auswählen
text-align
Der Absatz, den Sie gerade lesen, wurde mit text-align linksbündig ausgerichtet. Ferner wurde ein Rand von 50px eingestellt, just for fun oder auch, damit Sie ein Gefühl für die Prioritäten zwischen den einzelnen Stylesheet-Angaben bekommen.
Noch eine Textzeile
Noch eine TextzeileDer Absatz, den Sie gerade lesen, wurde mit text-align rechtsbündig ausgerichtet. Ferner wurde ein Rand von 50px eingestellt, just for fun oder auch, damit Sie sehen, wie die einzelnen Stylesheet-Angaben zusammenspielen.
Noch eine Textzeile
Noch eine TextzeileDer Absatz, den Sie gerade lesen, wurde mit text-align zentriert ausgerichtet. Ferner wurde ein Rand von 50px eingestellt, just for fun oder auch, damit Sie sehen, wie die einzelnen Stylesheet-Angaben zusammenspielen.
Noch eine Textzeile
Noch eine Textzeile