Moin Zusammen,
da immer mal wieder jemand
HTML-Dateien auseinander nehmen will, möchte ich hier meine Klasse zum Thema vorstellen.
Klasse: TcsHTMLDocument = class(TObjectList)
Hauptklasse
Allgemein gilt:
Bei der Suche nach
HTML-Tags, Attributen und Attributwerten spielt die Gross-/Kleinschreibung keine Rolle.
Der Rückgabewert der Suchmethoden ist -1 falls das Element nicht gefunden wurde oder die Indexangaben ausserhalb des gültigen Bereiches liegen (<0 oder > Gesamtanzahl der Elemente-1).
Ansonsten ist es der Index des gesuchten Elements.
constructor Create;
Initialisiert das Objekt.
destructor Destroy; override;
Zerstört das Objekt.
procedure Clear; override;
Setzt alle Felder des Objektes zurück.
function FindElement(const AType : TcsHTMLElementType;const AsName : string;const AiStart : Integer) : Integer;
Suche nach einem
HTML-Tag
AType => Typ des gesuchten Elements (hetStartTag,hetEndTag,hetStandaloneTag)
AsName => Name des gesuchten Elements
AiStart => Ab diesem Index wird nach dem Element gesucht
function FindContentIndex(const AiStart : Integer) : Integer;
Sucht nach dem nächsten Content.
AiStart => Ab diesem Index wird nach Content gesucht (hetContent,hetContentPre)
function FindElementBetween(const AType : TcsHTMLElementType;const AsName : string;const AiFrom : Integer;const AiTo : Integer) : Integer;
Sucht nach einem
HTML-Tag zwischen zwei Indizes (jeweils inclusive)
AType => Typ des gesuchten Elements (hetStartTag,hetEndTag,hetStandaloneTag)
AsName => Name des gesuchten Elements
AiFrom => Ab diesem Index wird nach dem Element gesucht
AiTo => Bis zu diesem Index wird nach dem Element gesucht
function FindElementWithAttribValue(const AType : TcsHTMLElementType;const AsName : string;const AsAttrib : string;const AsAttribValue : string;const AiStart : Integer) : Integer;
Sucht nach einem
HTML-Tag, dass ein Attribut mit einem bestimmten Wert enthält
AType => Typ des gesuchten Elements (hetStartTag,hetEndTag,hetStandaloneTag)
AsName => Name des gesuchten Elements
AsAttrib => Name des gesuchten Attributs
function FindMatchingTagsBetween(const AsName : string;const AiFrom : Integer;const AiTo : Integer;out AiStart : Integer;out AiEnd : Integer) : boolean;
Sucht nach zusammengehörigen Start-/Endtags zwischen zwei Indizes (jeweils inclusive)
AsName => Name des gesuchten
HTML-Tags
AiFrom => Ab diesem Index wird nach dem Element gesucht
AiTo => Bis zu diesem Index wird nach dem Element gesucht
function ReadAttribValue(const AiIndex : Integer;const AsAttrib : string) : string;
Den Wert eines Attributs des Elements an AiIndex auslesen.
AiIndex => Das Element dieses Indizes wird verwendet.
Result => Der Wert des Attributs wird zurückgegeben, oder ein Leerstring, falls das Attribut nicht vorhanden ist oder AiIndex ausserhalb des gültigen Bereichs liegt.
procedure LoadContentFromFile(const AsFilepath : string);
Den auszuwertenden Inhalt aus einer Datei laden.
Nach dem Laden wird automatisch ausgewertet.
property Element[Index : integer]
Gibt das Element (Typ: TcsHTMLElement) an Index zurück.
property Base
Wert des
HTML-Tags base bzw. dessen Attributs href.
Falls es nicht vorhanden ist enthält es einen Leerstring
property Root
Nicht genutzt.
property Images
Beim Auswerten des Inhalts werden hier alle Links auf Bilder zurückgegeben.
(Wert des Attributs src des
HTML-Tags img)
Format:
<img>=Wert des Attributs src des
HTML-Tags img
property Links
Beim Auswerten des Inhalts werden hier alle enthaltenen Ankerpunkte zurückgegben.
(Wert des Attributs href des
HTML-Tags a)
Eventuelle #-Angaben werden hierbei abgeschnitten.
Format:
<c>=Content vor dem a-Tag<a>=Link<c>=Content nach dem a-Tag
Ist kein Content vorhanden ist jeweils nur <c>= vorhanden.
property Content
Kann der Inhalt einer
HTML-Datei übergeben werden.
Durch das Zuweisen des Wertes wird automatisch die Auswertung gestartet.
Klasse: TcsHTMLElement = class(TObject)
Klasse für ein einzelnes Element der Datei.
Entweder ein
HTML-Tag mit Attributen oder Content
constructor Create(const AsName : string;const AElementType : TcsHTMLElementType);
Initialisiert das Objekt
AsName => Der Name des
HTML-Tags oder der Content
AElementType => Typ des Elements
destructor Destroy; override;
Zerstört das Objekt.
property Name
Name des Elements oder Content, je nach Typ des Elements
property ElementType
Typ des Elements
property Attribs
Die Liste der Attribute, falls es sich um ein
HTML-Tag handelt.
Klasse: TcsHTMLAttribList = class(TObjectList)
Liste der Attribute eines
HTML-Tags
function AddAttrib(const AsName : string;const AsValue : string) : Integer;
Fügt ein neues Attribut der Liste hinzu.
AsName => Name des Attributs
AsValue => Wert des Attributs. Der Wert ist nicht mehr in Anführungsstriche eingeschlossen.
property Attrib[Index : integer]
Gibt das Attribut (Typ: TcsHTMLAttrib) an Index zurück.
Klasse: TcsHTMLAttrib = class(TObject)
Klasse für ein einzelnes Attribut
constructor Create(const AsName : string;const AsValue : string);
Intitialisiert das Objekt.
AsName => Names des Attributs
AsValue => Wert des Attributs
property Name
Name des Attributs
property Value
Wert des Attributs (ohne Anführungsstriche)
Typ: TcsHTMLElementType
Eine Liste der Typen der Elemente
hetStartTag => Es handelt sich um ein Start-Tag (z.B. <head>)
hetEndTag => Es handelt sich um ein End-Tag (z.B. </head>)
hetStandaloneTag => Es handelt sich um ein Standalone-Tag (z.B. <br>)
hetContent => Inhalt zwischen
HTML-Tags
hetContentPre => Vorformatierter Inhalt zwischen <pre>-Tags