Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi HTML-Element aus String löschen (https://www.delphipraxis.net/94053-html-element-aus-string-loeschen.html)

Aenogym 15. Jun 2007 10:24


HTML-Element aus String löschen
 
hi leute,

ich melde mich mal wieder mit einem problem :)

ich habe einen string nach folgendem schema:

XML-Code:
<div> huhu </div>


foo</p>
<div id="links">
  <div> blah </div>
  <div> blah </div>
</div>


bar</p>
<div> lala </div>
aus diesem möchte ich das <div id="links"> entfernen, samt inhalt.
das ganze ist eine HTML-datei mit header und allem drum und dran. nur leider nicht ganz xml-valide, weshalb ich ohne weiteres keinen parser einsetzen kann.

mein problem ist, dass die verschachtelten <div>'s mich daran hindern, einfach alles von <div id="links" bis </div> zu löschen. denn es wird ja beim ersten </div> angehalten.
ich habe schon versucht, die verschachtelten divs zu zählen etc. doch leider stehe ich irgendwie auf dem schlauch.
mein programm ist fast fertig und ich müsste dieses eine problem noch bis spätestens 14 uhr in den griff kriegen :pale:

falls jemand schnell eine idee hat, wäre ich zutiefst dankbar! wenn ichs vorher selbst schaffe, melde ich mich natürlich hier.

danke euch,
aeno

edit: code bearbeitet

Tormentor32 15. Jun 2007 10:27

Re: HTML-Element aus String löschen
 
Brauchst ne Zählervariable, die sich bei jedem öffnendem Tag erhöht und bei jedem schließendem erniedrigt. Wenns wieder 0 ist, dann löschen!

Aenogym 15. Jun 2007 10:28

Re: HTML-Element aus String löschen
 
Zitat:

Zitat von Tormentor32
Brauchst ne Zählervariable, die sich bei jedem öffnendem Tag erhöht und bei jedem schließendem erniedrigt. Wenns wieder 0 ist, dann löschen!

das ging schnell :)

ja, soweit war icha uch schon. naja, ich habe explizit nach divs gezählt.... hm ich probier mal was aus... :)

danke schonmal :thumb:

edit: hm... ich such grad einfach nach "<" und ">", aber daran erkenn ich ja keine öffnenden und schließenden tags :( verdammt.... *denk* :coder2:

edit2: danke! jetzt hab ichs :) wenn ich gleich zeit finde, kann ich den code ja hier posten.

marabu 15. Jun 2007 11:04

Re: HTML-Element aus String löschen
 
Hallo Steffen,

dieser Beitrag enthält fast schon alles, was du brauchst. Statt der Selektion über getElementsByName() kannst du direkt mit getElementById() arbeiten:

Delphi-Quellcode:
var
  doc: IDispatch;
  e: IHTMLElement;
begin
  doc := GetDocument(Memo.Text);
  with doc as IHTMLDocument3 do
  begin
    e := getElementById('links');
    if Assigned(e) then
      e.outerHTML := '';
    Memo.Lines.Text := documentElement.outerHTML;
  end;
end;
Mit kleineren Anpassungen sollte es so funktionieren. Bin gespannt auf deinen Code...

Grüße vom marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:22 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz